改动时间
2020-03-12 20:08:10
进程管理
进程简介
进程是正在执行的程序或命令,没用过进程都是一个运行的实体,都有自己的地址空间和占用系统资源。注意
:程序运行会产生至少一个进程,例如ls
命令也会产生进程,只是结束很快。
ps aux系统进程
查看系统中所有进程
常用
ps aux
查看系统中所有进程,使用BSD操作系统格式USER
该进程由哪个用户产生的PID
进程ID号%CPU
该进程占用CPU百分比,占用越高,越耗费资源%MEM
该进程占用物理内存百分比,占用越高,越耗费资源VSZ
该进程占用虚拟内存的大小,单位KBRSS
该进程占用实际物理内存大小,单位KBTTY
该进程是在哪儿终端运行的- 其中tty1到tty7代表本地控制台终端,tty1到tty6是本地的字符界面终端,tty7是图形终端,例如VMware登录
- ps/0到ps/255代表虚拟终端,例如Xshell6登录
- ?表示不知道是哪个终端
STAT
进程状态- R运行 S睡眠 T停止 s包含子进程 +后台运行
START
进程的启动时间,超过日就用月日表示,不超过就用小时分钟表示TIME
占用CPU的时间COMMAND
产生进程的命令名称和参数
ps -le
查看系统中所有进程,使用Linux标准命令格式
top系统状态
查看系统健康状态top 选项
-d
秒数,指定top命令每隔几秒更新,默认3秒- 在top命令的交互模式中可执行的命令
?
或h
显示交互模式的帮助P
以CPU使用率排序,默认就是此项M
以内存使用率排序N
以PID排序q
退出top
详情解释
- 第一行
任务队列信息
内容 | 说明 |
---|---|
01:19:11 | 系统当前时间 |
up 9:59 | 系统运行时间,本机运行了9小时56分钟 |
1 user | 当前登录了一个用户 |
load average: 0.00, 0.01, 0.05 |
系统在1分钟,5分钟,15分钟的平均负载,一般认为小于1负载较小,大于1就是超负荷 |
- 第二行
进程信息
内容 | 说明 |
---|---|
Tasks: 155 total | 系统中的进程总数 |
2 running | 正在运行的进程数 |
153 sleeping | 睡眠的进程 |
0 stopped | 正在停止的进程 |
0 zombie | 僵尸进程(进程正在终止,还没有终止完成),如果不是0,需手工关闭僵尸进程 |
- 第三行
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的时间百分比 |
- 第四行
物理内存信息
内容 | 说明 |
---|---|
KiBana Mem : 1013244 total | 物理内存的总量,单位KB |
621948 free |
空闲的物理内存数量,我使用虚拟机,总分配1024MB,所以剩余621948/1024≈607MB |
124628 used | 已使用物理内存数量 |
266668 buff/cache | 作为缓冲的内存数量 |
- 第五行
交换分区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
终端号,按照终端号踢出用户
工作管理
放入后台执行
- 把进程放入后台运行,在命令后面加
&
也有一些情况是不能直接&
放入后台的例如.sh
脚本
可以使用nohup /root/sh/case1.sh &
表示执行脚本到后台
参考脚本
1 | #!/bin/bash |
- 把进程暂停并放入后台,例如输入
top
回车,按住Ctrl + Z
可以暂停放入后台
jobs查看后台
查看后台的工作jobs [选项]
-l
显示进程的PID+
加号表示最后一个放入后台的工作,也是工作恢复默认-
减号代表倒数第二个放入后台的工作
fg工作恢复到前台
将后台暂停的工作恢复到前台执行fg %工作号
%工作号
这里%可以省略,但是这里是指工作号,而不是PID- 直接输入
fg
表示恢复最后一个带有+
的工作号
bg工作恢复到后台
将后台暂停的工作恢复到后台执行bg %工作号
- 后台恢复的命令是不能与前台有交互的,否则不能恢复到后台执行
- 例如top命令不能恢复到后台,因为它是前台交互的
系统资源查看
vmstat监控系统资源
vmstat [刷新延迟 刷新次数]
procs
进程数memory
内存使用swap
交换分区io
硬盘输入输出处理system
系统资源使用cpu
CPU
查看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 | /usr/local/apache/logs/access-log 绝对路径日志文件 { |
#启动管理
略略略
备份与恢复
Linux需要备份的数据
/root/
目录/home/
目录/var/spool/mail/
目录/etc/
目录
你认为需要备份的其他目录
安装服务的数据
- Apache需要备份的数据
- 配置文件
- 网页主目录
- 日志文件
- MySQL需要备份的数据
- 源码包(
.tar.gz
)安装的MySQL/usr/local/mysql/data/
- RPM包(
yum
)安装的MySQL/var/lib/mysql/
- 源码包(
dump命令
略略略,使用cp命令