【Linux】⑤Linux系统管理,日志管理,备份与恢复

改动时间2020-03-12 20:08:10

进程管理

进程简介

进程是正在执行的程序或命令,没用过进程都是一个运行的实体,都有自己的地址空间和占用系统资源。
注意:程序运行会产生至少一个进程,例如ls命令也会产生进程,只是结束很快。

ps aux系统进程

查看系统中所有进程

  1. 常用ps aux查看系统中所有进程,使用BSD操作系统格式

    • USER该进程由哪个用户产生的
    • PID进程ID号
    • %CPU该进程占用CPU百分比,占用越高,越耗费资源
    • %MEM该进程占用物理内存百分比,占用越高,越耗费资源
    • VSZ该进程占用虚拟内存的大小,单位KB
    • RSS该进程占用实际物理内存大小,单位KB
    • TTY该进程是在哪儿终端运行的
      • 其中tty1到tty7代表本地控制台终端,tty1到tty6是本地的字符界面终端,tty7是图形终端,例如VMware登录
      • ps/0到ps/255代表虚拟终端,例如Xshell6登录
      • ?表示不知道是哪个终端
    • STAT进程状态
      • R运行 S睡眠 T停止 s包含子进程 +后台运行
    • START进程的启动时间,超过日就用月日表示,不超过就用小时分钟表示
    • TIME占用CPU的时间
    • COMMAND产生进程的命令名称和参数
  2. ps -le查看系统中所有进程,使用Linux标准命令格式

top系统状态

查看系统健康状态
top 选项

  • -d秒数,指定top命令每隔几秒更新,默认3秒
  • 在top命令的交互模式中可执行的命令
    • ?h显示交互模式的帮助
    • P以CPU使用率排序,默认就是此项
    • M以内存使用率排序
    • N以PID排序
    • q退出top

在这里插入图片描述

详情解释
  1. 第一行任务队列信息
    在这里插入图片描述
内容 说明
01:19:11 系统当前时间
up 9:59 系统运行时间,本机运行了9小时56分钟
1 user 当前登录了一个用户
load average: 0.00, 0.01, 0.05 系统在1分钟,5分钟,15分钟的平均负载,一般认为小于1负载较小,大于1就是超负荷
  1. 第二行进程信息
    在这里插入图片描述
内容 说明
Tasks: 155 total 系统中的进程总数
2 running 正在运行的进程数
153 sleeping 睡眠的进程
0 stopped 正在停止的进程
0 zombie 僵尸进程(进程正在终止,还没有终止完成),如果不是0,需手工关闭僵尸进程
  1. 第三行CPU信息
    在这里插入图片描述
内容 说明
%Cpu(s): 0.3us 用户模式占用的CPU百分比
0.0 sy 系统模式占用的CPU百分比
0.0 ni 改变过优先级的用户进程占用的CPU百分比
99.7 id 空闲进程的CPU百分比,如果很小,小于20需要买更多服务器搭建集群
0.0 wa 等待输入,输出进程占用的CPU百分比
0.0 hi 硬中断服务占用的CPU百分比
0.0 si 软中断服务占用的CPU百分比
0.0 st st (steal time)虚拟时间百分比,就是当有虚拟机时,虚拟CPU等待时机CPU的时间百分比
  1. 第四行物理内存信息
    在这里插入图片描述
内容 说明
KiBana Mem : 1013244 total 物理内存的总量,单位KB
621948 free 空闲的物理内存数量,我使用虚拟机,总分配1024MB,所以剩余621948/1024≈607MB
124628 used 已使用物理内存数量
266668 buff/cache 作为缓冲的内存数量
  1. 第五行交换分区swap信息
    在这里插入图片描述
内容 说明
KiB Swap: 3145724 total 交换分区(虚拟内存)的总大小,单位KB
3145724 free 空闲交换分区的大小
0 used 已经使用的交换分区的大小
719008 avail Mem 缓冲的交换分区总量

pstree进程树

查看进程树
pstree 选项

  • -p显示进程的PID
  • -u显示进的所属用户
  • 如果不能使用此命令,请安装yum -y install psmisc
    在这里插入图片描述
    在这里插入图片描述

kill命令

kill -l
在这里插入图片描述

信号代号 信号名称 说明
1 SIGHUP 重启进程
9 SIGKILL 强制终止
15 SIGTERM 正常终止,默认,杀不掉就用9

kill -1 pid重启进程
kill -9 pid强制终止
在这里插入图片描述

killall命令

killall [选项][信号] 进程名按照进程名杀死所有进程

  • -i交互式,询问是否要杀死某个进程
  • -I忽略进程名的大小写
    在这里插入图片描述

pkill命令

pkill [选项][信号] 进程名按照进程名终止进程

  • -t终端号,按照终端号踢出用户
    在这里插入图片描述

工作管理

放入后台执行

  1. 把进程放入后台运行,在命令后面加&
    在这里插入图片描述
    也有一些情况是不能直接&放入后台的例如.sh脚本
    可以使用nohup /root/sh/case1.sh &表示执行脚本到后台
参考脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
#`nohup 命令`
#`$(pwd)`表示当前路径
#`java -jar`运行的jar
#`--tool`指定PerfMonAgent来指定JMeter可以测试CPU,MEM...
#后面是指定是udp,tcp端口号
#`&`表示后台运行,查看后台`jobs -i`表示查看后台运行的程序,-i显示PID,
#jobs命令显示内容第一列表示工作号,可使用`fg %工作号`来恢复,直接输入`fg`表示恢复最后一条+的工作号,
#运行完成可以`ps aux|grep java`查看
nohup java -jar $(pwd)/CMDRunner.jar --tool PerfMonAgent --udp-port 0 --tcp-port 3450 &

#if [ "$?"==0 ]
# then
# echo 执行成功
# else
# echo 执行失败
#fi

#echo -e "执行成功会打印nohup: appending output to ‘nohup.out’\n"
#echo -e "可以使用Ctrl + C来关闭\n"
  1. 把进程暂停并放入后台,例如输入top回车,按住Ctrl + Z可以暂停放入后台
    在这里插入图片描述

jobs查看后台

查看后台的工作
jobs [选项]

  • -l显示进程的PID
    在这里插入图片描述
  • +加号表示最后一个放入后台的工作,也是工作恢复默认
  • -减号代表倒数第二个放入后台的工作

fg工作恢复到前台

将后台暂停的工作恢复到前台执行
fg %工作号

  • %工作号这里%可以省略,但是这里是指工作号,而不是PID
  • 直接输入fg表示恢复最后一个带有+的工作号
    在这里插入图片描述
    在这里插入图片描述

bg工作恢复到后台

将后台暂停的工作恢复到后台执行
bg %工作号

  • 后台恢复的命令是不能与前台有交互的,否则不能恢复到后台执行
    • 例如top命令不能恢复到后台,因为它是前台交互的

系统资源查看

vmstat监控系统资源

vmstat [刷新延迟 刷新次数]
在这里插入图片描述

  • procs进程数
  • memory内存使用
  • swap交换分区
  • io硬盘输入输出处理
  • system系统资源使用
  • cpuCPU

查看CPU详细信息

在这里插入图片描述

缓存,缓冲区别

缓存为了加速从硬盘读取
缓冲为了加速写入硬盘

uname系统信息

uname 选项系统与内核信息

  • -a
  • -r
  • -s
    在这里插入图片描述

查看系统位数

file /bin/ls
在这里插入图片描述

查看Linux发行版本

cat /etc/redhat-release
在这里插入图片描述

lsof查看进程调用哪些文件

lsof [选项]

  • -c 字符串列出以字符串开头的进程打开的文件
  • -u 用户名列出某个用户的进程打开的文件
  • -p PID列出某个进程打开的文件
    在这里插入图片描述

系统定时任务

crond服务管理与访问控制

  • service crond restart重启服务
  • chkconfig crond on设置crond开机自启动

用户的crontab设置

crontab [选项]

  • -e 编辑定时任务
项目 含义 范围
第一个* 一小时的第几分钟 0~59
第二个* 一天的第几个小时 0~23
第三个* 一月的第几天 1~31
第四个* 一年的第几月 1~12
第五个* 一周的星期几 0~7(0和7代表星期日)
时间 含义
* * * * * 命令 每一分钟执行一次命令
10 * * * * 命令 每小时的第10分钟执行一次命令
45 22 * * * 命令 每天的22:45执行一次命令
0 17 * * 1 命令 每周一的17:00执行一次命令
0 5 1,15 * * 命令 每月的1号和15号的05:00执行一次命令
40 4 * * 1-5 命令 每周一到周五的04:40执行一次命令
*/10 4 * * * 命令 每天的04:00每隔10分钟执行一次
0 0 1,15 * 1 命令 每个月的1号和15号的00:00或每周一的00:00都会执行一次命令
特殊符号 含义
* 任何时间,
例如第一个*表示一个小时每分钟执行一次
, 不连续时间,
例如0 8,12,16 * * * 命令表示每天08:00和12:00和16:00都会执行一次命令
- 连续的时间范围,
例如0 5 * * 1-6 命令表示每周1到周6的05:00都会执行一次命令
*/n 每隔多久执行一次,
例如*/10 * * * * 命令代表每隔10分钟执行一次命令

在这里插入图片描述

  • -l查询任务
  • -r删除当前用户的所有任务

日志管理

日志管理简介

确定服务启动

ps aux | grep rsyslogd查看服务是否启动

systemctl list-unit-files | grep enabled查看开启自启动的服务

systemctl list-unit-files | grep rsyslog查看服务是否开启自启动 enabled开启 disabled禁用

chkconfig rsyslog on开启rsyslog服务开机自启动

常见日志的作用

日志文件 说明
/var/log/cron 记录系统定时任务相关的日志
/var/log/dmesg 记录开机自检的信息
/var/log/lastlog 用户登录信息,使用命令lastlog查看
/var/log/maillog 邮件信息
/var/log/messages 记录系统重要信息,使用cat -n /var/log/messages显示行号查看文件
/var/log/secure 记录验证授权信息,使用cat -n /var/log/secure显示行号查看文件
/var/log/wtmp 记录用户登录,注销信息,使用命令last来查看
/var/log/httpd/记录了Apache的日志,这是我使用yum命令安装的服务

还可以使用命令w who users查看登录信息

rsyslogd日志服务

日志文件格式

基本日志格式包括

  • 事件产生时间
  • 发生事件的服务器主机名(IP地址)
  • 产生事件的服务名或程序名
  • 事件的具体信息
    在这里插入图片描述

配置文件

/etc/rsyslog.conf
在这里插入图片描述

配置文件详情

例如authpriv.* /var/log/secure

  • authpriv表示服务名称
  • .表示连接符号
  • *日志等级
  • /var/log/secure日志记录位置
  • 认证相关服务,所有日志等级在/var/log/secure

连接符号

  • *代表所有日志等级
    • 例如authpriv.*代表authpriv认证信息服务产生的日志,所有日志等级都记录
  • .代表只要大于等于当前日志等级的都记录
    • 例如cron.info代表cron服务产生的日志,只要日志等级大于等于info等级,就记录
  • .=代表只记录所需等级的日志,其他等级的都不记录
    • 例如*.emerg代表人和日志服务产生的日志,只要等级是emerg就记录,这种用法少见,了解即可
  • .!代表不等于,也就是除了该等级的日志外,其他等级日志都记录

日志等级

等级名称 说明
debug 一般的调试信息说明
info 基本的通知信息
notice 普通信息,但有一定重要性
warning 警告信息,但还不会影响到服务或系统的运行
err 错误信息,一般会影响服务或系统的运行
crit 临界状态信息,比err还严重
alert 警告状态信息,比crit还严重,需立即处理
emerg 疼痛等级信息,系统已经无法使用了

日志记录位置

+ 常用,日志文件的绝对路径,例如`/var/log/secure` + 不常用,系统设备文件,如`/dev/lp0` + 转发给远程主机,如`@192.168.0.210:514`都发给它,就相当于搭建了一台日志服务器 + 用户名,例如`root`,没登录相当于不要 + 忽略或丢弃日志,例如`~`

日志轮替

日志文件的命名规则

配置文件有dateext参数,用日期来做后缀,例如secure-20191112
配置文件没有dateext参数,第一次日志自动改名secure.1,第二次先把第一次日志改名为secure.2 再把当前作为secure.1

logrotate配置文件

参数 说明
daily 每天
weekly 每周
monthly 每月
rotate 数组 保留的日志文件个数,0表示无备份
compress 对旧的进程压缩
create mode owner group 建立新日志并把权限给所有者所属组,例如create 0600 root group
mail address 输出内容通过邮件发送出去,例如mail 18574150851@163.com
missingok 若日志不在,则忽略警告
notifempty 若日志为空,不进行轮替
minsize 大小 日志大于等于最小值才会轮替,否则时间到达也不轮替
size 大小 日志只有大于指定大小才进行轮替,而不是按照时间轮替,例如size 100K
dateext 使用日期作为后缀,例如secure-20191112

加入Apache日志加入轮替

在这里插入图片描述

1
2
3
4
5
/usr/local/apache/logs/access-log 绝对路径日志文件 {
daily 每天执行
create 创建新的
rotate 30 保留30天
}

#启动管理

略略略

备份与恢复

Linux需要备份的数据

/root/目录
/home/目录
/var/spool/mail/目录
/etc/目录
你认为需要备份的其他目录

安装服务的数据

  • Apache需要备份的数据
    • 配置文件
    • 网页主目录
    • 日志文件
  • MySQL需要备份的数据
    • 源码包(.tar.gz)安装的MySQL/usr/local/mysql/data/
    • RPM包(yum)安装的MySQL/var/lib/mysql/

dump命令

略略略,使用cp命令