CentOS系统管理命令大全

进程管理
进程管理简介
进程是正在执行的一个程序或命令,每一个进程都是一个运行的尸体,都有自己的 地址空间,并占用一定的系统资源。
进程管理的作用
- 判断服务器健康状态
- 查看系统中所有进程
- 杀死进程
进程的查看
查看所有进程
ps命令
- ps aux 查看系统中所有进程,使用BSD操作系统格式
-
ps -le 查看系统中所有进程,使用Linux标准命令格式
-
选项
-a 显示一个终端的所有进程,除了会话
-u 显示进程的归属用户及内存的使用情况
-x 显示没有控制终端的进程
-l 长格式显示。显示更加详细的信息
-e 显示所有进程和-A作用一致
-
选项
pstree命令
-
pstree
- 选项 -p 显示进程的PID -u 显示进程的所属用户
top命令
查看系统健康状态
-
top
-
选项 -d 秒数 指定投票命令每隔几秒更新。默认3秒 -b 使用批处理模式输出。一般和
-n
选项合用 -n 次数 指定top命令指定的次数。一般和-b
选项合用
-
选项 -d 秒数 指定投票命令每隔几秒更新。默认3秒 -b 使用批处理模式输出。一般和
- 在top命令的交互模式当中可以执行的命令 ?或h 显示交互模式的帮助 P 以CPU使用率排序,默认就是此项 M 以内存的使用率排序 N 以PID排序 q 退出top
第一行信息为任务队列信息
内容 | 说明 |
---|---|
12:26:46 | 系统当前时间 |
up 1 day, 13:32 | 系统的运行时间,本机已经运行1天13小时32分钟 |
2 users | 当前登录了两个用户 |
load average: 0.00, 0.00, 0.00 | 系统在之前1分钟,5分钟,15分钟的平均负载。一般任务小于1时,负载较小。如果大于1,系统已经超出负载。 |
第二行为进程信息
内容 | 说明 |
---|---|
Tasks: 95 tatal | 系统中进程总数 |
1 running | 正在运行的进程数 |
94 sleeping | 睡眠的进程 |
0 stopped | 正在停止的进程 |
0 zombie | 僵尸进程。如果不是0,需要手工检查僵尸进程 |
注:
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。
第三行行为CPU信息
内容 | 说明 |
---|---|
Cpu(s): 0.1%us | 用户模式占用的CPU百分比 |
0.1%sy | 系统模式占用的CPU百分比 |
0.0%ni | 改变过优先级的用户进程占用的CPU百分比 |
99.7%id | 空闲CPU的CPU百分比 |
0.1%wa | 等待输入/输出的进程占用CPU百分比 |
0.0%hi | 硬终端请求服务占用的CPU百分比 |
0.1%si | 软中断请求服务占用的CPU百分比 |
0.0%st | st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比 |
第四行行为物理内存信息
内容 | 说明 |
---|---|
Mem: 625344k total | 物理内存的总量,单位KB |
571504k used | 已经使用的物理内存数量 |
53840 free | 空闲的物理内存数量,我们使用虚拟机,总共只分配了628MB内存,所以只有53MB的空闲内存了 |
65800k buffers | 作为缓冲的内存数量 |
注:
buffers:加速写入;例如保存文件内容,真是情况是先写入文件进程的缓冲区,然后在文件关闭和系统空闲时再写入硬盘。
第五行为交换分区(swap)信息
内容 | 说明 |
---|---|
Swap: 524280k total | 交换分区(虚拟内存)的总大小 |
Ok used | 已经使用的交互分区的大小 |
524280k free | 空闲交换分区的大小 |
409289k cached | 作为缓存的交换分区的大小 |
注:
cached:加速读取;例如,读取硬盘文件时可以把部分文件放在内存中缓存起来,不用每次访问硬盘,加速读取文件速度。
top内容主要查看 load average、cpu的空闲率、内存的空闲、Swap分区的空闲。
进程的结束
kill命令
-
kill -l
- 查看可用的进程信号
信号代号 | 信号名称 | 说明 |
---|---|---|
1 | SIGHUB | 该信号让进程立即关闭,然后重新读取配置文件之后重启 |
2 | SIGINT | 程序终止信号,用于终止前台进程。相当于输出ctl+c快捷键 |
8 | SIGFPE | 在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等其他所有的算术的错误 |
9 | SIGKILL | 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。一般用于强制终止进程。 |
14 | SIGALRM | 时钟定时信号,计算的是实际的时间或时钟时间。alarm函数使用该信号 |
15 | SIGTERM | 正常结束进程的信号,kill命令默认信号。有时如果进程已经发生问题,这个信号是无法正常终止进程的,我们才会尝试SIGKILL信号,也就是信号9。 |
18 | SIGCONT | 该信号可以让暂停的进程恢复执行,本信号不能被阻塞。 |
19 | SIGSTOP | 该信号可以暂停前台进程,相当于输入ctl+z快捷键。本信号不能被阻断。 |
SIGHUB信号 若apache服务器重新设置配置文件,需要重启apache服务,如果使用服务命令stop、start时关闭服务造成用户体验非常差。那么可以使用Kill -HUB pid的命令使apache服务重新加载配置实现平滑重启。但apache服务有多个服务进程,那么可以使用killall 命令实现。 平滑重启不会使服务器登录用户掉线。
SIGKILL 强制终止进程,kill -9 2236
killall命令
-
killall [选项][信号]进程名
- 选项 -i 交互式,询问是否要杀死某个进程 -I 忽略进程名的大小写
pkill命令
-
pkill [选项][信号]进程号
- 选项 -t 终端号 按照终端号踢出用户
注:pkill和killall命令基本相同。
进程优先级的修改
进程优先级简介
Linux操作系统是一个多用户、多任务的操作系统,Linux系统中通知运行着非常多的进程。但是CPU在统一时钟周期内只能运算一个指令。进程优先级决定了每个进程处理的先后顺序。
修改NI值时有几个注意事项
- NI的值的范围是-20到19
- 普通用户调整NI值的范围是0到19,而且只能调整自己的进程
- 普通用户只能调高NI值,而不是降低,如原本NI值为0,则只能调整为大于0
- root用户才能设定进程NI值为负值,而且可以调整任何用户的进程
- PRI(最终值)=PRI(原始值)+NI
- 用户只能修改NI的值,不能直接修改PRI
nice命令
-
nice [选项] 命令 nice命令可以给新执行的命令直接赋予NI值,但是不能修改已经存在进程的NI值
- 选项 -n NI值 给命令赋予NI值
renice命令
- renice [优先级] PID renice命令是修改已经存在进程的NI值命令
工作管理
工作管理简介
工作管理是指在单个登录终端中(也就是登录的shell界面中)同时管理多个工作的行为。
注意事项
-
当前的登录终端,只能管理当前终端的工作,而不能管理其他登录终端的工作
-
放入后台的命令必须可以持续运行一段时间,这样我们才能捕捉和操作这个工作
-
放入后台执行的命令不能和前台有交互或需要前台输入,否则放入后台只能暂停,而不能运行
工作管理方法
进程放入后台
- 使用 & 把命令放入后台
- 使用 ctrl + z快捷键把命令放入后台
查看后台的工作
-
jobs
- 选项 -l 显示工作的PID 注:”+”号代表最近一个放入后台的工作,也是工作回复时,默认回复的工作。”-“号代表倒数第二个放入后台的工作
将后台暂停的工作恢复到前台执行
-
fg %工作号
- 参数 %工作号 %号可以省略,但是注意工作和PID的区别
将后台暂停的工作恢复到后台执行
-
bg %工作号
- 参数 %工作号 %号可以省略,但是注意工作和PID的区别
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行
后台命令脱离登录终端执行
简介
把命令放入后台,只能在当前登录终端执行。一旦退出或关闭终端,后台程序就会停止。
后台命令脱离登录终端执行的方法
- 把需要后台执行的命令加入 /etc/rc.local文件
- 使用系统定时任务,让系统在指定的时间执行某个后台命令
- 使用nohub命令,推荐使用
- 做成daemon守护进程 如mysqld服务
系统资源查看
vmstat命令监控系统资源
vmstat [刷新延时 刷新次数]
- process 进程信息字段 -r 等待运行的进程数,数量越大,系统越繁忙 -b 不可被唤醒的进程数量,数量越大,系统越繁忙
- memory 内存信息字段 -swpd 虚拟内存的使用情况,单位KB -free 空闲的内存容量,单位KB -buff 缓冲的内存容量,单位KB -cache 缓冲的内存容量,单位KB
- swap 交换分区的信息字段 -si 从磁盘中交换到内存中数据的数量,单位KB -so 从内从中交换到磁盘中数据的数量,单位KB。此两个数越大,证明数据需要经常在磁盘和内存之间交换,系统性能越差。
- io 磁盘读写信息字段 -bi 从块设备读入数据的总量,单位是块 -bo 写到块设备的数据的总量,单位是块。次两个数越大,代表系统的I/O越繁忙。
- system 系统信息字段 -in 每秒被中断的进程次数 -cs 每秒中进行的时间切换次数。此两个数越大,代表系统与接口设备的通信非常繁忙。
- CPU CPU信息字段 -us 非内核进程消耗CPU运算时间的百分比 -sy 内核进程消耗CPU运算时间的百分比 -id 空闲CPU的百分比 -wa 等待I/O所消耗的CPU百分比 -st 被虚拟机所盗用的CPU占比
dmesg开机时内核检测信息
free命令查看内存使用状态
-
free [-b|-k|-m|-g]
- 选项 -b 以字节为单位显示 -k 以KB为单位显示,默认就是以KB为单位显示 -m 以MB为单位显示 -g 以GB为单位显示
查看CPU信息
uptime命令
显示系统的启动时间和平均负载,也就是top命令的第一行。w命令也可以看到这个数据。
查看系统与内核相关信息
-
uname [选项]
- 选项 -a 查看系统所有相关信息 -r 查看内核版本 -s 查看内核名称
判断当前系统的位数
- file /bin/ls
查看当前Linux系统的发行版本
- lsb_release -a
列出进程打开或使用的文件信息
-
lsof [选项] 列出进程调用或打开文件的信息
- 选项 -c 字符串 只列出以字符串开头的进程打开的文件 -u 用户名 只列出某个用户的进程打开的文件 -p pid 列出某个PID进程打开的文件
缓存和缓冲的区别 简单来说缓存(cache)用来加速数据从硬盘中“读取”的,而缓冲(buffer)用来加速数据“写入”硬盘的。
系统定时任务
- at一次性定时任务
- crontab循环定时任务
- 系统的crontab设置
- anacron配置
at命令
确定at安装
at的访问控制
-
如果系统中有/etc/at.allow文件,那么只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令(/etc/at.deny文件会被忽略)
-
如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件(黑名单)中的用户不能使用at命令。对root不起作用
-
如果系统中这两个文件都不存在,那么只有root用户可以使用at命令
at命令
at [选项] 时间 选项 -m 当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户 -c 工作号 显示该at 工作的实际内容 时间: -HH:MM 例如:02:30 -HH:MM YYYY-MM-DD 例如:02:30 2013-07-25 -HH:MM [am|pm] [month] [date] 例如:02:30 July 25 -HH:MM [am|pm] + [minutes|hours|days|weeks] 例如:now + 5 minutes
例子
其他at管理命令
-
atq
- 查询当前服务器上的at工作
-
atrm [工作号]
- 删除指定的at任务
crontab
crond服务管理与访问控制
访问控制
-
当系统中有/etc/cron.allow文件时,只有写入此文件的用户可以使用crontab命令,没有写入的用户不能使用crontab命令。同样如果有此文件,/etc/cron.deny文件会被忽略,/etc/cron.allow文件的优先级更高
-
当系统中只有/etc/cron.deny文件时,则写入此文件的用户不能使用crontab命令,没有写入文件的用户可以使用crontab命令
用户的crontab设置
-
crontab [选项]
- 选项: -e 编辑crontab定时任务 -l 查询crontab任务 -r 删除当前用户所有的crontab任务
项目 | 含义 | 范围 |
---|---|---|
第一个* | 一小时当中的第几分钟 | 0-59 |
第二个* | 一天当中的第几小时 | 0-23 |
第三个* | 一个月当中的第几天 | 1-31 |
第四个* | 一年当中的第几个月 | 1-12 |
第五个* | 一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个“*”就代表一小时中的每分钟都执行一次的意思 |
, | 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表每天的8点0分,12点0分,16点0分都执行一次命令 |
- | 代表连续的时间范围,比如“0 5 * * 1-6 命令”,代表在周一到周六凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次。比如“ */10 * * * * 命令”,代表每隔10分钟就执行一遍命令 |
crontab注意事项
-
六个选项不能为空,必须填写。如果不确定使用“*”代表任意时间。
-
crontab定时任务,最小有效时间是分钟,最大时间范围是月。想2018年某时执行,3点30分30秒这样的时间都不能识别。
-
在定义时间时,日期和星期最好不要在一条定时任务中出现,因为他们都是以天作为单位,飞铲更容易让管理员混乱。
-
在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都是用绝对路径。
注:定时任务自带的环境变量与$PATH中的保存的环境变量不一定相同,所以在crontab中使用绝对路径。
系统定的crontab设置
“crontab -e”是每个用户执行的命令,也就是说不同的用户身份可以执行自己的定时任务。可是有些定时任务需要系统执行,这是我们就需要编辑/etc/crontab这个配置文件。
执行系统的定时任务的方法
-
手工执行定时任务
-
系统定时任务
-
第一种是把需要定时执行的脚本复制到/etc/cron.{daily, weekly, monthly}目录中任意一个
-
第二种是修改/etc/crontab配置文件
-
anacron配置
anacron是用来保证在系统关机的时候错过的定时任务,可以在系统开机之后再执行
anacron检测周期
-
anacron会使用一天,七天,一个月作为检测周期
-
在系统的/var/spool/anacron/目录中存在cron.{daily, weekly, monthly}文件,用于记录上次执行cron的时间
-
和当前时间作比较,如果两个时间的差值超过了anacron的指定时间差值,证明有cron任务没有被执行
CentOS 6.x 的区别
-
在老的CentOS版本中,/etc/cron.{daily, weekly, monthly}这些目录即会被cron调用,也会被anacron调用,容易重复执行
-
在CentOS 6.x中则只会被anacron调用,避免了重复执行
-
在CentOS 6.x中,anacron不再是服务,而是系统命令
anacron配置文件
cron.daily工作来说明执行过程
-
首先读取/var/spool/anacron/cron.daily中上一次anacron执行的时间
-
和当前时间比较,如果两个时间差值超过1天,就执行cron.daily工作
-
执行这个工作只能在03:00-22:00之间
-
执行工作时强制延迟时间为5分钟,再随机延迟0-45分钟时间
-
使用nice命令指定默认优先级,使用run-parts脚本执行/etc/cron.daily目录中所有可执行文件
本文由 CentOS中文站 - 专注Linux技术 作者:centos 发表,其版权均为 CentOS中文站 - 专注Linux技术 所有,文章内容系作者个人观点,不代表 CentOS中文站 - 专注Linux技术 对观点赞同或支持。如需转载,请注明文章来源。