Unit 10 Investigating and managing processes
Keyword: process 终于说到进程啦。进程简单点说就是活动的程序,在磁盘上的死死的文件终于加载到内存了面了。在磁盘上程序是不活动的,只有其他的用户或系统对其进行编辑或复制粘贴的时候才会更改,而加载到内存后程序与之最大的不同就是就算没有其它用户或系统的因素,它的状态都可能会有变动。所以系统针对进程的工具与针对文件的工具也有很大的不同,对文件主要是编辑、管理类型,而对进程主要是监察、调整类型。
关于进程有几样东西要解释清楚的。
- pid——进程号,每个进程都有唯一的一个进程号坐位。
- ppid——父进程号,父进程的pid。Linux在开始的时候第一个进程就是init,他的pid是1,ppid是0。谁的pid是0?我不知道。
- /proc——内存状态文件夹。里面的都是内存的状态资料,尽管以文件的状态存在(还记得Linux的哲学吗?),但的确是与内存活动相对应的。
- signal——信号,用以改变进程的状态。通常用来终止程序。
- nice——每个进程都有一个nice值,此值在-20到19之间,defualt是0。nice越小进程优先级越高,也就是更优先执行。
*ps*
尽管ps是Linux自带的,但也算是一个相当不错的监控工具。ps的有点不好的地方就是参数多。本来多也不是问题,主要是重复多,它主要分为GNU sytle、BSD-sylte和UNIX sytle三种(这里又想讨论一下Linux)。所以一般用你熟悉的就是啦,千万不要和别的风格搅浑了。Red Hat用的是UNX sytle,笔者就入乡随俗啦。
ps -e 显示所有进程
ps –u 显示加载进程的用户
ps –H 按父子关系显示进程结构
ps –o 输出的时候按照自定义的格式,如$ps –eHo comm,pid,ppid,user,rss 。详细的格式名称可以看帮助。
ps –p 一般过滤都用grep或者pgrep,ps也提供一个根据pid过滤得参数。如:ps –p $(pidof sendmail)
*kill*
其实kill并不是直接杀死进程,它发送一个signal给进程,进程根据不同的signal作出响应。就是说,进程也有可能不响应。一般用kill的时候习惯不用加[-signal]部分,但有些时候kill不死,就得靠它了。常用的signal有
SIGTERM or 15
SIGKILL or 9
SIGHUP or 1
kill [-signal] pid 如$kill 4320
killall [-signal] command如$killall -9 sendmail
pkill [-signal] pattern如$pkill –SIGTERM bash
*top*
相当于字符界面的任务管理器。可以排序,kill或设置nice。按?或h查看帮助。其他的?请看帮助
*nice*
在执行程序的时候设定nice值。
$nice –n 5 bash 设定bash的nice值是5。
*renice*
renice 15 –p pid 由于程序加载以后,可能会同名,所以要用pid来确定究竟要改变哪个进程的nice值。
再提一下,关于进程有一种情况叫做后台运行。要程序再后台运行,就必须再程序执行的命令后面加&,如$sendmail & 。另一种情况叫做挂起,即执行程序后希望暂停一下,可按Ctrl+z挂起。这两种情况都需要额外的命令管理。这两种情况都可以叫做后台运行。
*jobs*
显示当前有什么后台运行的进程。
*bg*
如果进程是挂起后,希望再次在后台运行,就用bg。
*fg*
如果进程是挂起后,希望再次在前台运行,就用fg。
阅读(420) | 评论(0) | 转发(0) |