进程管理相关

显示进程树

pstree                   查看进程树
pstree    -p             带显示PID的查看进程树
pstree    -ps   PID      查看某个PID的父子进程关系 

显示当前终端中进程

ps

a 选项包括所有终端中的进程 
x 选项包括不链接终端的进程 
u 选项显示进程所有者的信息 
f 选项显示进程树,相当于 --forest 
k|--sort  属性 对属性排序,属性前加- 表示倒序 
o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem 
L 显示支持的属性列表 

ps aux 常用,进程基本信息显示很全了
ps o pid,cmd,%cpu,%men 显示定制信息
ps aux k pid 按pid排序
ps aux --sort pid 按pid排序 按内存排序在6上没效果,在7上有用

ps常见选项

-C cmdlist 指定命令,多个命令用,分隔 
-L 显示线程 
-e: 显示所有进程,相当于-A 
-f: 显示完整格式程序信息 
-F: 显示更完整格式的进程信息 
-H: 以进程层级格式显示进程相关信息 
-u userlist  指定有效的用户ID或名称 
-U userlist 指定真正的用户ID或名称 
-g gid或groupname  指定有效的gid或组名称 
-G gid或groupname  指定真正的gid或组名称 
-p pid 显示指pid的进程 
-t  tty  终端
--ppid pid  显示属于pid的子进程  
-M  显示SELinux信息,相当于Z 

ps -ef 显示进程信息
ps -Lef 显示线程
ps -eF 显示最完整格式的进程信息
ps -LeF 显示所有线程
ps -C 命令 显示该命令的进程信息

ps输出属性

VSZ: Virtual memory SiZe,虚拟内存集,线性内存
RSS: ReSident Size, 常驻内存集
STAT:进程状态
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zombie
+: 前台进程
l: 多线程进程
L:内存分页带锁
N:低优先级进程
<:高优先级进程
s: session leader,会话(子进程)发起者

优先级:

ni: nice值 
pri: priority 优先级 
psr: processor  CPU编号 
rtprio: 实时优先级 

常用案例:

查询你拥有的所有进程: 
ps -x 
显示指定用户名(RUID)或用户ID的进程:
ps -fU apache 
ps -fu 48 
显示指定用户名(EUID)或用户ID的进程: 
ps -fu wang 
ps -fu 1000 
查看以root用户权限(实际和有效ID)运行的每个进程:  
ps -U root -u root 
列出某个组拥有的所有进程(实际组ID:RGID或名称): 
ps -fG nginx 
列出有效组名称(或会话)所拥有的所有进程:  
ps -fg mysql 
ps -fG 27 
通过进程ID来显示所属的进程:  
ps -fp 1234 
以父进程ID来显示其下所有的进程,如显示父进程为1154的所有进程: 
ps -f --ppid 1234 
显示指定PID的多个进程: 
ps -fp 1204,1239,1263 
要按tty显示所属进程:  
ps -ft pst/0 
以进程树显示系统中的进程如何相互链接:  
ps -e --forest 
以进程树显示指定的进程 
ps -f --forest -C sshd 
ps -ef --forest | grep -v grep | grep sshd 
要显示一个进程的所有线程,将显示LWP(轻量级进程)以及 NLWP(轻量级进程数)列: 
ps -fL  -C nginx
查看进程的PID,PPID,用户名和命令: 
ps -eo pid,ppid,user,cmd  
自定义格式显示文件系统组,ni值开始时间和进程的时间:  
ps -p 1234 -o pid,ppid,fgroup,ni,lstart,etime 
使用其PID查找进程名称:  
ps -p 1244 -o comm= 
要以其名称选择特定进程,显示其所有子进程  
ps -C sshd,bash 
查找指定进程名所有的所属PID,在编写需要从std输出或文件读取PID的脚本时这个参数很有用: 
ps -C httpd,sshd -o pid= 
检查一个进程的执行时间 
ps -eo comm,etime,user | grep nginx  
查找占用最多内存和CPU的进程: 
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head 
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head 
显示安全信息: 
ps -eM 
ps --context 
使用以下命令以用户定义的格式显示安全信息。 
ps -eo euser,ruser,suser,fuser,f,comm,label 
使用watch实用程序执行重复的输出以实现对就程进行实时的监视,如下面的命令显示每秒钟的监视: 
watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=%mem | head' 

搜索进程

最灵活:ps 选项 | 其它命令
按预定义的模式:pgrep

pgrep [options] pattern -----------支持正则表达式
    -u uid: effective user,生效者 
    -U uid: real user,真正发起运行命令者 
    -t terminal: 与指定终端相关的进程 
    -l: 显示进程名 
    -a: 显示完整格式的进程名 
    -P pid: 显示指定进程的子进程

pgrep -au 用户名
pgrep -at 终端名

  按确切的程序名称:/sbin/pidof     
  pidof httpd 
  使用pidof可以监控服务进程是否在工作
  开启服务返回值是0,没开启返回值是非零

kill命令

向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写显示当前系统可用信号:

kill –l
trap -l

常用信号:man 7 signal 
1)  SIGHUP: 无须关闭进程而让其重读配置文件 
2)  SIGINT: 中止正在运行的进程;相当于Ctrl+c 
3)  SIGQUIT:相当于ctrl+\ 
9) SIGKILL: 强制杀死正在运行的进程 
15)SIGTERM:终止正在运行的进程 
18)SIGCONT:继续运行 
19)SIGSTOP:后台休眠 

0)只是给指定进程发一个信号,可以判断该进程是否正常,不正常就重启服务
killall -0 进程名
echo $? 返回值0,在运行;返回值1,没有运行,需要重启服务,开启进程

指定信号的方法:
(1) 信号的数字标识:1, 2, 9
(2) 信号完整名称:SIGHUP
(3) 信号的简写名称:HUP

按PID:kill [-SIGNAL] pid …

kill –n SIGNAL pid
kill –s SIGNAL pid 

按名称:killall [-SIGNAL] comm…
按模式:pkill [options] pattern

 -SIGNAL 
-u uid: effective user,生效者 
-U uid: real user,真正发起运行命令者 
-t terminal: 与指定终端相关的进程 
-l: 显示进程名(pgrep可用) 
-a: 显示完整格式的进程名(pgrep可用) 
-P pid: 显示指定进程的子进程  

pkill -9 -t 终端号
pkill -9 -u 用户名
pkill -9 -P PID

kill -9 init 杀所有程序的主进程init,虽然杀不了,但是也会中伤的,
例如:/sbin/mingetty 这个程序会影响的,这个程序是和切换到虚拟终端登陆退出在登陆有关系,
如果这个有问题,虚拟机终端退出,界面不会重新显示提示登陆
这个tty是可以加的和修改
例如修改centos6的

你可能感兴趣的:(进程管理相关)