进程shell
1. 几个查看命令
发现一个问题,若是选项不带-的话,显示的更加简洁。并且使用ps –aux的时候,会有一个报错。
ps –l:只能查阅本身的bash程序
ps aux:查阅全部的系统进程
ps ef:比ps –aux简洁易读一些
ps aux | egrep “cron|syslog” :结合egrep同时查看多个进程
2. 关于僵尸程序(zombie)
僵尸程序是指程序结束了可是还一直存在内存当中。形成僵尸程序的缘由是由于该程序已经执行完毕,或者因故应该终止了,可是该程序的父程序却没法完整的节哀那个该程序结束掉,形成该程序一直存在内存中。
若是ps的时候发现某个程序的CMD后面还接上了<defunct>时,就表示该程序是僵尸程序。
相对应的孤儿进程就是父进程挂掉了可是子进程还存在。系统是不容许这种状况出现的,init将成为该子进程的父进程。
3. init是系统第一个启动的程序,是全部程序的父进程。他是没法被kill掉的,由于他被kill了系统就挂掉了。
4. 持续检测整个系统的程序工做状态:top命令
top –d x :x表示更新时间,默认为5秒
top命令默认是以CPU的使用率进行排序的;输入M表示之内存使用率排序,输入N表示以PID号码进行排序,输入T表示由CPU使用时间排序,输入r表示修改nice值。
若是须要查看某个进程的资源使用状况,能够经过top –p xxx 命令实现,-p参数表示接PID。
5. pstree:用于查找程序之间的依赖关系。
pstree –A或者pstree –U:表示若是有乱码的话,尝试以ansi码或者万国码输出
pstree –Aup :输出时携带user和PID信息
6. 进程的管理
使用kill和killall命令实现对进程的管理。这个命令在前面有所介绍。
kill -1 xxx:-1表示进程从新启动,xxx表示进程的PID
查找进程PID比较麻烦,可使用killall命令跟服务名的方式,例如killall –i -1 syslogd 。-i表示交换式,就是kill的时候会请求你的确认,若是有多个相同进程名的话(如bash),则-i颇有用。
另外还有两个特别好用的命令,在shell编程中使用普遍,
pgrep
和
pkill。例如:pgrep httpd可以提取出httpd的全部进程,pkill httpd可以终止全部httpd的进程。
7. 进程优先级
PRI(new)=PRI(old)+nice
nice值使咱们能够手动调整的,使用nice或者renice或者top命令后键入r进行调整。root帐户的nice值可调范围在-20~19,普通帐户的nice值可调范围在0~19。
nice –n x command
例如:nice –5 vi &将vi进程的nice值调整为5
若是是已经在运行中的进程,使用renice命令调整。
renice n pid :n表示nice值,pid表示须要调整的进程pid,
注意
n
前面没有
-
参数
8. 使用free能够查看系统CPU利用率和内存使用等信息
free –m
9. uptime,查看系统启动时间,运行时间,目前有几个登陆者,CPU使用率的平均状况等信息。
10. vmstat (victual memory statics)能够动态了解系统资源的运做,例如等待运行的程序数量,被阻塞的程序数量,CPU空闲,交换分区(swap)的交换出去的进程数量等,是一个很好用的工具。须要关注的有r(running,等待的进程,不要超过2倍cpu数量),b(block,阻塞的进程,为0比较好),swpd(被交换的进程,为0比较好),id(idle,cpu空闲百分比,大于50%较好)。
vmstat 5 5 5s统计一次,共计统计5次
11. fuser,用于了解当前文件系统正在被哪些程序使用,在umount被拒绝的时候很好用。
fuser –muv / :/ 能够切换成其余文件系统。u表示列出进程所属用户,v表示verbose,m表示能够查看文件系统。若是值查看某个文件则去掉m。可是通常只有fifo类型的文件才使用此命令才有显示(find / –type p)
12. lsof(list open files),是一个列出当前系统进程的相应的打开文件的工具。与fuser工具做用相反。
lsof –u ila | grep vim
13. 找出某个程序的PID
e.g.
pidof –s vi :找出正在运行的vi程序的PID。
查看某个用户开启的进程: ps –uU usrxxx
关闭图形程序:xkill