Linux进程显示与删除 ( 常用版 )

系统 2914 0

 前台与后台进程      
 每个进程都可能以两种方式存在:前台(Foreground)与后台(Background)。所谓前台进程,就是用户目前在屏幕上进行操作的进程;而后台进程则是实际上在操作,但由屏幕上并无法看到的进程。   

 通常使用后台方式执行的情况是,当此进程较为复杂且必须执行较长的时间时,我们会将它置于后台中执行,以避免占用屏幕的时间过久,而无法执行其他的进程。
 系统的服务一般都是以后台进程的方式存在的        ,而且都会驻留在系统中,直到关机时才结束,这类服务我们也称为      Daemon        ,在Linux系统中就包含许多Daemon。   

 判断Daemon        最简单的方法就是由名称来判断,多数Daemon都是由      服务名称加上d来产生的        ,例如HTTP服务的Daemon为httpd。   

 显示目前进程 ps
 
 ps命令是Process Status的缩写,它的功能是查看目前的系统中有哪些进程正在执行,以及它们的执行情况。您可以直接输入ps命令名称而不加任何参数。
 如果直接执行ps命令,则会出现类似以下的信息:  

[root@ns1 ~]# ps    
PID TTY TIME CMD    
1635 pts/0 00:00:00 su    
1636 pts/0 00:00:00 bash    
1679 pts/0 00:00:00 ps

 上述ps命令显示的数据共分为4个字段,它们的说明如下:
 PID:进程标识(Process ID),系统即是凭着这个编号来识别及处理此进程的。
 TTY:Teletypewriter,登录的终端机编号。
 TIME:此进程所消耗的CPU时间。
 CMD:正在执行的命令或进程名称。
 上述的信息是ps命令显示的最基本数据画面,其实ps支持非常多的参数。因为ps是非常常用的命令,所以本书在此将说明其中较为重要的参数的使用方法。   

 显示详细信息 ps -l
 
 如果需要更详细的系统数据,可以使用-l(Long)参数,它除了显示ps命令的4个基本字段数据外,另外还有10个额外数据可供查看,这些额外数据的内容及说明如下:  

[root@ns1 ~]# ps -l    
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD    
4 S 0 9822 9521 0 81 0 - 1220 wait4 pts/2 00:00:00 su    
4 S 0 9970 9822 0 75 0 - 1294 wait4 pts/2 00:00:00b ash    
4 R 0 15354 9970 0 80 0 - 788 - pts/2 00:00:00 ps


 F        :该进程状态的标志(Flag),表12-1是较常用的标志及说明。
 表12-1 进程状态标志说明
 标 志 名 称标 志 代 码说 明
 ALIGNWARN001打印警告信息
 STARTING002进程正在初始化
 EXITING004系统正在关机
 PTRACED010表示已调用ptrace(0)
 TRACESYS020跟踪System Call
 FORKNOEXEC040已执行fork但没有执行exec
 SUPERPRIV100以root身份执行
 DUMPCORE200内核转储
 SIGNALED400以Signal结束进程   

 S        :进程状态代码(Process State Codes),可用的代码及说明如表12-2所示。
 表12-2 进程状态代码说明      
 代码说明
 D不可中断的闲置状态(Uninterruptible Sleep)
 R可执行的
 S闲置状态
 (续)
 代码说明
 T跟踪或停止
 Z已死亡的进程(Zombie)
 W没有足够的内存页可分配
 <高优先级的进程
 N低优先级的进程
 L有内存页分配并锁在内存内   

 UID        :进程执行者的ID(User ID)。
 PPID        :父进程标识(Parent Process ID)。
 PRI        :进程执行的优先级(Priority)。
 NI        :nice,是指进程执行优先级的nice值,负值表示其优先级较高。
 SZ        :Size,进程所占用的内存大小,以KB为单位。
 WCHAN        :Waiting Channel,表示进程或系统调用等待时的地址。   

 ps -u
 
 另一种显示详细内容信息的参数为-u(User),它的主要功能是将进程数据以用户的格式来显示,以下是部分的示例内容以及新的字段说明:  

[root@ns1 ~]# ps -u    
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND    
root 9822 0.0 0.0 4880 168 pts/2 S 16:20 0:00 [su]    
root 9970 0.0 0.4 5176 872 pts/2 S 16:20 0:00 -bash    
root 15448 0.0 0.3 2644 696 pts/2 R 18:30 0:00 ps -u    
......    
?%CPU:CPU使用率百分比。    
?%MEM:内存使用率百分比。    
?VSZ:占用的虚拟内存大小。    
?RSS:占用的物理内存大小。    
?START:进程开始时间。


 显示后台进程 ps -x        
 其实,系统中目前执行的进程绝不是只有输入ps命令时的数目,事实上有为数更多的进程以后台的方式来执行,它们一般都是系统的服务(Daemon),或是用户利用&来处理的进程。如果要查看这些后台进程,可以使用-x参数,以下是部分的示例内容:  

[root@ns1 ~]# ps -x    
PID TTYSTATTIMECOMMAND    
1 ?S0:04 init [5]    
2 ?SW0:00 [keventd]    
3 ?SW0:00 [kapmd]    
4 ?SWN0:00 [ksoftirqd/0]    
......

有经验的管理员一般都习惯一次查看所有用户执行的进程以及后台进程,此时可以使用-aux参数。    
 虽然  -aux参数可以提供最详尽的信息,但是有时并不是很容易找出所需的信息,因此我们可  配合使用grep命令,以缩小查看的范围。以下是找出与用户jack有关的进程及其内容的示例:    

[root@ns1 ~]# ps -aux | grep jack    
jack2728 0.4 0.7 5164 1380 pts/0S08:18 0:00 -bash    
root2806 0.0 0.3 4444 644 pts/0S08:18 0:00 grep jack

....    
 结束执行中的进程    
 如果某个进程执行到一半时中断,或消耗太多的系统资源,例如内存数量及CPU时间,此时您可以考虑使用kill命令来将指定的信号传送到该进程。    
 虽然kill命令可以传送的信号有很多种,但以SIGTERM(15)或SIGKILL(9)居多,它们都是用来结束进程执行的。您可以使用-l参数来查看所有可供传送的信号,如图12-2所示。    

张军博客  
图12-2 kill命令可传送的信号

因为kill命令在使用时必须通过进程ID来指定信号的接收进程,所以需先以ps命令来得知要传送的PID,之后再使用kill命令加上指定的PID来送出终止信号以结束进程。    
 以下示例假设要终止PID 16525进程的执行:    
 [root@ns1 ~]# kill 16525    
 因为有些进程会捕捉某些信号,所以当直接指定PID无法终止其进程时,您可以使用-9参数,它代表送出SIGKILL信号。    
 [root@ns1 ~]# kill -9 16525    
 如果使用-9参数仍无法结束该进程,还可以尝试使用-15参数来送出SIGTERM信号;如果连-15参数都无法成功地删除此进程,则只有重新启动这一方法了。    
 通常,极难删除的进程大多与系统运行有关联,如果删除后可能会影响系统的性能或执行,因此最好不要养成直接使用-9和-15参数的习惯。    
 [root@ns1 ~]# kill -15 16525    
 kill命令另外一个常用的时机是,当对某个Daemon进行修改或设置后,您可以使用-HUP(Hang Up)参数来重新启动该进程,这可减少重新启动计算机的时间。    
 [root@ns1 ~]# kill -HUP 16525 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论