Linux进程显示与删除

本文介绍 Linux 系统中进程的基础知识,包括进程的概念、如何显示当前系统中的进程信息以及如何结束不需要的进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux进程显示与删除

Linux系统中,每个执行的任务都称为进程(Process),例如使用ls命令浏览目录内容,或查询日期时间输入的date命令。同时,在每个进程启动时,系统都会给它指定一个惟一的数值,这个数值就称为“进程ID”Process IDPID)。如果要针对某个进程进行管理,例如结束进程的执行,必须以进程ID(而不是该进程的名称)作为参考的对象。
每个进程都会存在一个对应的父进程(Parent Process),而由这个父进程可以复制多个子进程,这是网络程序编写时很常用的一种方式,这个动作就称为Fork,如图12-1所示。

12-1


最常见的一个Fork例子就是Web服务器,Web服务器通常都可以支持多个客户端的连接,而服务器方面利用一个父进程来接受客户端的请求,然后利用Fork来产生一个子进程以处理后续的任务,之后该父进程就可再度回到等待客户端请求的状态,如此即可不断地为客户端服务。
前台与后台进程
每个进程都可能以两种方式存在:前台(Foreground)与后台(Background)。所谓前台进程,就是用户目前在屏幕上进行操作的进程;而后台进程则是实际上在操作,但由屏幕上并无法看到的进程。
通常使用后台方式执行的情况是,当此进程较为复杂且必须执行较长的时间时,我们会将它置于后台中执行,以避免占用屏幕的时间过久,而无法执行其他的进程。
系统的服务一般都是以后台进程的方式存在的,而且都会驻留在系统中,直到关机时才结束,这类服务我们也称为Daemon,在Linux系统中就包含许多Daemon
判断Daemon最简单的方法就是由名称来判断,多数Daemon都是由服务名称加上d来产生的,例如HTTP服务的Daemonhttpd
显示目前进程
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是非常常用的命令,所以本书在此将说明其中较为重要的参数的使用方法。
显示详细信息
如果需要更详细的系统数据,可以使用-lLong)参数,它除了显示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   进程状态标志说明
标 志 名 称 标 志 代 码 说      明
ALIGNWARN 001 
打印警告信息
STARTING 002 
进程正在初始化
EXITING 004 
系统正在关机
PTRACED 010 
表示已调用ptrace0
TRACESYS 020 
跟踪System Call
FORKNOEXEC 040 
已执行fork但没有执行exec
SUPERPRIV 100 
root身份执行
DUMPCORE 200 
内核转储
SIGNALED 400 
Signal结束进程
?S
:进程状态代码(Process State Codes),可用的代码及说明如表12-2所示。
12-2   进程状态代码说明
代      码 说      明
不可中断的闲置状态(Uninterruptible Sleep
可执行的
闲置状态
(续)
代      码 说      明
跟踪或停止
已死亡的进程(Zombie
没有足够的内存页可分配
高优先级的进程
低优先级的进程
有内存页分配并锁在内存内
UID
:进程执行者的IDUser ID)。
PPID
:父进程标识(Parent Process ID)。
PRI
:进程执行的优先级(Priority)。
NI
nice,是指进程执行优先级的nice值,负值表示其优先级较高。
SZ
Size,进程所占用的内存大小,以KB为单位。
WCHAN
Waiting Channel,表示进程或系统调用等待时的地址。
而另一种显示详细内容信息的参数为-uUser),它的主要功能是将进程数据以用户的格式来显示,以下是部分的示例内容以及新的字段说明:

[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命令时的数目,事实上有为数更多的进程以后台的方式来执行,它们一般都是系统的服务(Daemon),或是用户利用&来处理的进程。如果要查看这些后台进程,可以使用-x参数,以下是部分的示例内容:

[root@ns1 ~]# ps -x PID   TTY STAT TIME  COMMAND 1   ? S 0:04      init [5] 2   ? SW 0:00      [keventd] 3   ? SW 0:00      [kapmd] 4   ? SWN 0:00      [ksoftirqd/0] ......

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

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

....
结束执行中的进程
如果某个进程执行到一半时中断,或消耗太多的系统资源,例如内存数量及CPU时间,此时您可以考虑使用kill命令来将指定的信号传送到该进程。
虽然kill命令可以传送的信号有很多种,但以SIGTERM15)或SIGKILL9)居多,它们都是用来结束进程执行的。您可以使用-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进行修改或设置后,您可以使用-HUPHang Up)参数来重新启动该进程,这可减少重新启动计算机的时间。
[root@ns1 ~]# kill -HUP 16525

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值