所谓Linux的进程,就是正在执行中的程序。当一个程序或命令执行时,执行用户的权限、属性及程序的代码都会被载入内存当中,并且分配到一个PID,即进程ID。
查看进程和杀死进程,是运维人员常用的判断服务器健康状态的手段。比如查看一个进程CPU占用率、内存占用率过高时,就要做出判断这个进程是否是正常进程,如果是正常应用的进程,那么说明服务器已不能满足该应用的需要,需要升级服务器或者搭建集群进行优化。如果判断为是有人利用漏洞入驻的非法进程,那么就要想办法连根拔起,杀死进程。
1、查看进程
查看进程的方式主要分为三种:ps命令(静态)、top命令(动态)、pstree命令(进程树)。
1.1、 ps命令
- ps aux 命令:查看系统中所有的进程:(使用BSD操作系统格式,注意没有 “-” )
参数说明:
- ps -le 命令:也可查看系统中所有的进程,而且还能看到进程的父进程的PID和进程优先级:
参数说明:
ps -l 命令:不想查看所有进程,只查看当前登录产生的进程使用此命令即可:
1.2、top命令
- 执行 top 命令结果如下:
参数说明:
第一行:任务队列信息
第二行:进程统计信息
第三行:CPU信息
第四行:物理内存信息
第五行:交换分区信息
第六行开始:进程列表
- top命令的一些附带参数:
- top命令在交互模式下(进程列表)可以执行的命令:
1.3、pstree命令
- 执行 pstree 命令结果如下:(如下图,YDService——12*[{YDService}] 代表有12个YDService子进程存在)
- pstree命令附带参数:
2、杀死进程
2.1、kill命令
- 可通过 kill PID 命令杀死进程 或 kill -9 PID 命令强制杀死进程,如下杀死redis进程:
2.2、killall命令
- 可通过 killall 进程名 命令杀死一类进程,如下又杀死redis进程:
- killall 命令附带参数:
如下查看登录系统的sshd进程有3个,第一个为sshd服务进程不能杀死,下面两个为远程终端,此时我们可以用 killall -i 命令杀死第二个终端,杀死后终端掉线:
2.3、pkill命令
- 可通过 pkill 进程名 命令杀死一类进程,如下还杀死redis进程:
- killall 命令附带参数:
如下使用 w 命令 查询当前有两个登录用户,可使用 pkill -9 -t 用户终端号 强制踢出其中一个用户:
3、进程的优先级
可通过修改ps -le命令结果中的“NI”值(Nice)来调整进程的优先级,NI值越小,PRI值就会降的越低,该进程就越优先被CPU处理。关于NI设置的注意事项:
3.1、nice命令
可使用 nice -n NI值 进程执行命令 给新执行的命令直接赋予NI值,如下:(不能修改已存在进程的NI值)
nice -n -5 service httpd start
3.2、renice命令
可使用 renice NI值 PID 修改已存在进程的NI值,如下:
renice -10 2137