Linux高级

目录

一、日志管理 

1.1基本介绍

1.2系统常用的日志

1.3日志管理服务rsyslogd

1.3.1基本介绍

1.3.2查询rsyslogd服务的指令

1.3.3/etc/rsyslog.conf配置文件

1.3.4案例

1.4日志轮替

1.4.1基本介绍

1.4.2日志轮替文件命名

1.4.3logrotate配置文件

1.4.4把自己的日志加入到日志轮替中

1.4.5案例

1.4.6日志轮替机制原理

1.5查看内存日志

二、备份与恢复

2.1基本介绍

2.2安装dump和restore

2.3使用dump完成备份

2.3.1基本介绍

2.3.2基本语法

2.3.3案例

2.4使用restore完成恢复

2.4.1基本介绍

2.4.2基本语法

2.4.3案例

三、linux可视化管理工具

3.1webmin

3.1.1基本介绍

3.1.2安装并配置webmin

3.1.3webmin功能

3.2bt(宝塔)

3.2.1基本介绍

3.2.2安装bt

3.2.3bt功能

四、Linux面试题

4.1分析日志t.log的访问量,将各个IP截取,并统计出现次数,并按从大到小排序,最终显示排序结果的前两行(腾讯)

4.2统计连接到服务器的各个IP情况,并按连接数从大到小排序(腾讯)

4.3若忘记了mysql5.7数据库的root用户的密码,如何找回?(滴滴)

4.4使用tcpdump监听本机,抓取来自IP 192.168.37.1,TCP端口为22的数据包,并保存到tcpdump.log中,方便以后用来进行数据分析(美团)

4.5常用的Nginx模块及作用(头条)

4.6如果你是系统管理员,在进行linux系统权限划分时,需要考虑哪些因素?(腾讯)

4.7Linux查看内存、IO读写、磁盘存储、端口占用、进程查看的命令是什么?(瓜子)

4.8使用linux命令计算t2.txt第二列的和并输出(美团)

4.9Shell脚本中如何检查一个文件是否存在?并给出提示(百度)

​编辑

4.10写一个shell脚本,对文本t3.txt中无序的一列数字排序,并将总和输出(百度)

​编辑

4.11查找当前文件夹(/home)下所有的文本文件内容中包含有“hello”的文件名称(金山)

4.12统计/home目录下所有文件个数和所有文件内容的总行数(金山)

4.13说说你了解的web服务器负载架构(滴滴)

4.14每天晚上十点半,打包压缩站点目录/var/spool/mail中的文件到/home目录下(每次备份按时间生成不同的备份包)(滴滴)

 4.15如何优化Linux系统?(瓜子)


一、日志管理 

1.1基本介绍

  • 日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。
  • 日志对于安全来说很重要,它记录了系统每天发生的各种事情。通过日志来检查错误发生的原因或者受到攻击时攻击者留下的痕迹。
  • 总而言之,日志是用来记录重大事件的工具。

1.2系统常用的日志

/var/log目录就是系统日志文件的保存位置。

系统常用的日志

案例

使用root用户通过xshell6登录(第一、二次使用错误密码,第三次使用正确密码),再在/var/log/secure日志文件中查看相关信息。

日志文件的格式(参考上方案例)

  • 事件产生的时间
  • 产生事件的服务器的主机名
  • 产生事件的服务名或程序名
  • 时间的具体信息

1.3日志管理服务rsyslogd

1.3.1基本介绍

  • CentOS7.6日志服务是 rsyslogd ,CentOS6.x日志服务是syslogd 。
  • rsyslogd 功能更强大。
  • rsyslogd 的使用、日志文件的格式和 syslogd 服务兼容的。
     

1.3.2查询rsyslogd服务的指令

命令说明备注
ps -aux | grep rsyslogd | grep -v grep查询系统中的rsyslogd服务

grep -v:

改变匹配的意义,只选择不匹配的行

systemctl list-unit-files | grep rsyslog查询rsyslogd服务的自启动状态

1.3.3/etc/rsyslog.conf配置文件

/etc/rsyslog.conf配置文件决定了日志管理服务rsyslogd记录什么类型的日志(日志类型)什么级别的日志(日志级别)

日志类型

日志类型说明
auth   pam产生的日志
authprivssh、ftp等登录信息的验证
corn时间任务相关
kern内核
lpr打印
mail邮件
mark(syslog)-rsyslog服务内部的信息,时间标识
news新闻组
user用户程序产生的相关信息
uucpunix to nuix copy 主机之间相关的通信
local 1-7自定义的日志设备

日志级别

日志级别说明
debug有调试信息的,日志通信最多
info一般信息日志,最常用
notice最具有重要性的普通条件的信息
warning警告级别
err错误级别,阻止某个功能或者某个模块不能正常工作的信息
crit严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert需要立即修改的信息
emerg内核崩溃等重要信息
none什么都不记录
注意:从上至下,级别由低到高,记录信息越来越少。

文件格式

左边:

  • 第一个单词代表日志类型,第二个单词代表日志级别。(左边*代表任意的日志类型,右边*代表任意的日志级别)。

右边:

  • 日志对应地记录在哪个日志文件中。

1.3.4案例

在/etc/rsyslog.conf中添加一个日志文件/var/log/ydh.log。当有事件发生时(比如sshd服务相关事件),该文件会接收到信息并保存。

1.在/etc/rsyslog.conf配置文件中添加自定义的日志

2.创建一个日志文件(也可以不用创建,系统重启后会自动创建)

 

3.重启系统

4.用Xshel6远程登录CentOS服务端

5.查看自定义的日志文件(这里只关注sshd服务)

1.4日志轮替

1.4.1基本介绍

日志轮替就是把旧日志文件移动并改名,同时建立新的空日志文件。当旧日志文件超出保存范围之后,就会进行删除。

1.4.2日志轮替文件命名

  • centos7使用logrotate进行日志轮替管理,要想改变日志轮替文件名字,通过/etc/logrotate.conf 配置文件中“dateext”参数:
    • 如果配置文件中有“dateext”参数,那么日志会用日期来作为日志文件的后缀,例如“secure-20201010”。这样日志文件名不会重叠,也就不需要日志文件的改名,只需要指定保存日志个数,删除多余的日志文件即可。
    • 如果配置文件中没有“dateext”参数,日志文件就需要进行改名了。当第一次进行日志轮替时,当前的“secure”日志会自动改名为“secure.1”,然后新建“secure”日志,用来保存新的日志。当第二次进行日志轮替时,“secure.1"会自动改名为“secure.2”,当前的“secure”日志会自动改名为“secure.1”,然后也会新建“secure”日志,用来保存新的日志,以此类推。

1.4.3logrotate配置文件

  • /etc/logrotate.conf为全局配置文件(给日志文件指定全局配置策略)

  • /etc/logrotate.d目录下的子配置文件(给某个日志文件指定单独配置策略)

 参数说明

参数说明
daily日志轮替的周期是每天
weekly日志轮替的周期是每周
monthly日志轮替的周期是每月
rotate 数字保留的日志文件的个数(rotate 0表示没有备份)
compress日志轮替时,旧的日志进行压缩
create mode owner group建立新日志,同时指定新日志的权限与所有者和所属组
copytruncate拷贝一份旧日志,清空原来的旧日志
mail address当日志轮替时,输出内容通过邮件发送到指定的邮件地址
missingok如果日志不存在,则忽略该日志的警告信息
notifempty如果日志为空文件,则不进行日志轮替
minisize 大小日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替
size 大小日志只有大于指定大小才进行日志轮替,而不是按照时间轮替
dateext使用日期作为日志轮替文件的后缀
sharedscripts在此关键字之后的脚本只执行一次
prerotate/endscript在日志轮替之前执行脚本命令
postrotate/endscript在日志轮替之后执行脚本命令

1.4.4把自己的日志加入到日志轮替中

  • 法一:直接在/etc/logrotate.conf配置文件中写入日志文件的轮替策略。
  • 法二:在/etc/logrotate.d目录中建立日志文件的轮替文件,然后在该轮替文件中写入轮替策略(此方法可行是因为该目录的文件都会被“include”到主配置文件中)。
  • 推荐使用第二种方法,因为系统中需要轮替的日志非常多,如果全部直接写入/etc/logrotate.conf配置文件,那么这个文件的可管理性就会非常差,不利于此文件的维护。

1.4.5案例

法一:直接在/etc/logrotate.conf配置文件中写入日志文件ydh.log的轮替策略。

法二:在/etc/logrotate.d目录下创建日志文件ydh.log的轮替文件ydhlog,然后在ydhlog中写入轮替策略。

这里只演示法二。

1.4.6日志轮替机制原理

日志轮替之所以可以在指定的时间备份日志,是依赖于系统定时任务。在/etc/cron.daily目录,就会发现这个目录中存在可执行文件logrotate。系统每天都会定时调用该文件,实现日志轮替。

1.5查看内存日志

命令说明
journalctl查看全部内存日志
journalctl -n 3查看最新3条的内存日志
journalctl --since 19:00 --until 19:10:10查看起始时间到结束时间的内存日志
journalctl -p err查看报错的内存日志
journalctl -o verbose查看内存日志详细内容
journalctl_PID=520 _COMM=sshd查看包含这些参数的日志

注意

  • journalctl查看的是内存日志,重启后将会被清空。

案例:查看服务sshd的内存日志 

 重启后再次查看服务sshd的内存日志 :

之前的内存日志被清空了。

二、备份与恢复

2.1基本介绍

实体机无法做快照。如果系统出现异常或者数据损坏,后果严重,要重做系统,还会造成数据丢失。所以需要使用备份和恢复技术。

备份和恢复的两种方式:

  1. 把需要的文件(或者分区)用tar命令打包,下次恢复的时候,解压即可。
  2. 使用dump和restore命令。

2.2安装dump和restore

如果linux上没有dump和restore命令,需要先安装。

命令说明
yum -y install dump安装dump命令
yum -y install restore安装restore命令

2.3使用dump完成备份

2.3.1基本介绍

dump支持分卷和增量备份(增量备份就是备份上次备份后修改/增加过的文件,也称为差异备份)。

2.3.2基本语法

dump [-cu] [-0123456789] [-f<备份后文件名>] [-T<日期>] [要备份的目录或文件系统]

dump [-wW]

选项说明
-c创建新的归档文件,并将由一个或多个文件参数所指定的内容写入归档文件的开头
-0123456789备份层级(0是最完整备份,会备份所有文件。若指定0以上的层级,则备份上一次修改或增加的文件。到9后,可以再次轮替)
-f指定备份后的文件名
-j调用bzlib库压缩备份文件(文件格式为bz2)
-T指定开始备份的时间与日期
-u备份完毕后,在/etc/dumpdates中记录备份的文件系统,层级,日期与时间
-t指定文件名,若该文件已存在备份文件,则列出名称
-W显示需要备份的文件及其最后一次备份的层级,时间,日期
-w与-W相似,但仅显示需要备份的文件

2.3.3案例

案例1:将/boot分区所有内容备份到/opt/boot.bak0.bz2文件中,备份层级为“0”
        dump -0uj -f /opt/boot.bak0.bz2 /boot

案例2:在/boot目录下增加新文件,然后将新文件备份到/opt/boot.bak1.bz2文件中,备份层级为“1”

        1.touch /boot/hello.txt

        2.dump -1uj -f /opt/boot.bak1.bz2 /boot

案例3:显示需要备份的文件及其最后一次备份的层级,时间,日期

        dump -W

   

 案例4:查看备份时间文件

        cat /etc/dumpdates

        

注意

  • 分区支持增量备份,但是文件或目录不支持。
  • 备份重要文件时,建议上传到其它服务器保存,以免本机系统崩溃,备份文件丢失。

2.4使用restore完成恢复

2.4.1基本介绍

restore命令用来恢复已备份的文件,可以从dump生成的备份文件中恢复原文件。

2.4.2基本语法

restore [模式选项] [选项]

模式选项(四个选项不能混用)说明
-C对比模式,将备份的文件与原来的文件相互对比
-t查看模式,查看备份文件中有哪些文件
-r还原模式,恢复备份文件(如果有增量备份,需要把增量备份文件也进行恢复,有几个增量备份文件,就要恢复几个,按顺序来恢复)
-i交互模式,在进行还原操作时,restore命令将依次询问用户

选项说明
-f<备份设备>从指定的文件中读取备份数据,进行还原操作

2.4.3案例

案例1:对比模式,将备份的文件与原来的文件相互对比。

        情况1:原来的文件发生变化(hello.txt变为hello2.txt):

        

         情况2:原来的文件未发生变化:

        

 案例2:查看模式,查看备份文件中有哪些文件

        restore -t -f boot.bak0.bz2

        

案例3:还原模式,恢复备份文件

       

三、linux可视化管理工具

3.1webmin

3.1.1基本介绍

Webmin是功能强大的基于Web的Unix/linux系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理操作。

3.1.2安装并配置webmin

1.下载安装包

下载地址:http://download.webmin.com/download/yum

也可以在linux中使用命令行:

wget http://download.webmin.com/download/yum/webmin-1.700-1.noarch.rpm

2.安装

3.重置密码(注意这里的root是webmin的用户名,不是linux系统的),把webmin的root用户的密码改为test

4.修改webmin服务的默认端口号10000(修改是出于安全目的)

5.重启webmin服务

6.防火墙开放xxxx端口

--zone=public(如不写也没关系,默认添加到public域)表示将端口添加到作用域public。

7.登录webmin

http://ip:port

root账号和test密码登录: 

 

3.1.3webmin功能

修改语言,IP访问控制,查看进程,修改密码,任务调度,mysql服务器管理等等。

3.2bt(宝塔)

3.2.1基本介绍

bt宝塔linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/Java等多项服务器管理功能。

3.2.2安装bt

安装:

yum -y install wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装成功后控制台会显示登录地址、账号密码。

 在浏览器中打开,输入账号密码:

3.2.3bt功能

注意

  • 可以在linux终端输入bt default查看bt的账号密码。

四、Linux面试题

4.1分析日志t.log的访问量,将各个IP截取,并统计出现次数,并按从大到小排序,最终显示排序结果的前两行(腾讯)

t.log中的内容:

 分步进行:

总结

  • 分隔:cut(-d指定分隔符,-f指定取的段数)
  • 排序:sort(-nr表示降序排序,默认升序排序)
  • 统计相同结果的个数:uniq -c
  • uniq -c之前一定要sort一下。
  • 显示前几行:head

4.2统计连接到服务器的各个IP情况,并按连接数从大到小排序(腾讯)

 总结

  •  一般情况下,空格分隔(不管列与列之间存在多少个空格)采用awk,其他分隔采用cut。

4.3若忘记了mysql5.7数据库的root用户的密码,如何找回?(滴滴)

1.修改配置文件

2.增加下方内容(跳过授权表):

 3.这时随便输入密码就进来了:

4.使用mysql数据库: 

 

5.查看user表结构: 

 

6.这里只关注字段authentication_string: 

7.给root用户重新设置密码: 

 

 8.刷新mysql系统权限的相关表:

 

9. exit退出mysql,并在/etc/my.cnf配置文件中注释skip-grant-tables(取消跳过权限表)。

10.再次登入mysql,输入新密码:

4.4使用tcpdump监听本机,抓取来自IP 192.168.37.1,TCP端口为22的数据包,并保存到tcpdump.log中,方便以后用来进行数据分析(美团)

 总结

  • -i指定网卡,host指定主机,port指定端口号。

4.5常用的Nginx模块及作用(头条)

rewrite模块:重写

access模块:来源控制

ssl模块:安全加密

ngx_http_gzip_module:网络传输压缩

ngx_http_proxy_module:实现代理

ngx_http_upstream_module:实现定义后端服务器列表

ngx_cache_purge:实现缓存清除

4.6如果你是系统管理员,在进行linux系统权限划分时,需要考虑哪些因素?(腾讯)

1.首先阐述linux权限的主要对象:

所有者、所在组、其它组

2.权限含义与权限修改:

3.根据实际经验考虑因素:

  • 注意权限分离(如:工作中,linux系统权限和数据库权限不要在同一部门)。
  • 权限最小原则(在满足使用的情况下赋予最小权限,否则权限过大可能会破坏其他用户的文件或者系统本身)。
  • 减少root用户使用,尽量用普通用户+sudo提权进行日常操作。
  • 重要系统文件(如:/etc/passwd、/etc/shadow、/etc/fstab、/etc/sudoers等),日常建议使用chattr(change attribute)锁定,需要操作时再打开。

  • 使用suid,sgid,sticky设置特殊权限。
  • 利用工具chkrootkit/rootkit hunter 检测rootkit脚本(rootkit是入侵者使用的工具,在不经意间就建立了入侵系统途径)

        下载:wget ftp://ftp.pangeia.com.br/publseg/pac/chkrootkit.tar.gz

        解压压缩包:

        进入目录:

        运行chkrootkit:

  •  利用工具Tripwire检测文件系统完整性。

4.7Linux查看内存、IO读写、磁盘存储、端口占用、进程查看的命令是什么?(瓜子)

  • top
  • iotop
  • df -lh
  • netstat -tunlp
  • ps -aux | grep xxx

4.8使用linux命令计算t2.txt第二列的和并输出(美团)

4.9Shell脚本中如何检查一个文件是否存在?并给出提示(百度)

4.10写一个shell脚本,对文本t3.txt中无序的一列数字排序,并将总和输出(百度)

4.11查找当前文件夹(/home)下所有的文本文件内容中包含有“hello”的文件名称(金山)

总结 

命令说明
grep -r 关键词 目录查找该目录下的所有文件中是否存在该关键词。若有,返回文件名
grep -r 关键词 文件查找该文件是否存在该关键词。若有,返回该关键词
grep -i 关键词 文件

4.12统计/home目录下所有文件个数和所有文件内容的总行数(金山)

4.13说说你了解的web服务器负载架构(滴滴)

  • Nginx
  • Haproxy
  • Keepalived
  • LVS

4.14每天晚上十点半,打包压缩站点目录/var/spool/mail中的文件到/home目录下(每次备份按时间生成不同的备份包)(滴滴)

 4.15如何优化Linux系统?(瓜子)

对linux的架构优化:

 对linux系统本身的优化:

  1. 使用sudo提权,不用root。
  2. 定时的自动更新服务时间,使用nptdate npt1.aliyun.com,让cron定时更新
  3. 配置yum源,指向国内镜像(清华,163)
  4. 配置合理的防火墙策略,打开必要的端口,关闭不必要的端口
  5. 打开最大文件数(调整文件的描述的数量)vim /etc/profile ulimit -SHn 65535
  6. 配置合理的监控策略
  7. 配置合理的系统重要文件的备份策略
  8. 对安装的软件进行优化,比如nginx,apache
  9. 内核参数进行优化 /etc/sysctl.conf
  10. 锁定一些重要的系统文件 chattr /etc/passwd /etc/shdow /etc/inittab
  11. 禁用不必要的服务 setup,ntsysv
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值