PID
总是为1
。d
来命名那些通常作为守护程序运行的程序。例如,BIND 是伯克利互联网名称域,但实际执行的程序被命名为named
。Apache
网络服务器程序是httpd
,行式打印机的spooling daemon
是lpd
。这只是一个命名惯例。例如,Sendmail 应用程序的主要邮件守护程序是sendmail
,而不是maild
。1% ps2PID TT STAT TIME COMMAND38203 0 Ss 0:00.59 /bin/csh48895 0 R+ 0:00.00 psCopied!
1
开始分配,一直到99999
,然后再绕回开头。然而,如果一个 PID 已经被使用,则不会被重新分配。TT 列显示了程序正在运行的 tty,STAT 显示了程序的状态。TIME 是该程序在 CPU 上运行的时间。这通常不是程序启动后所经过的时间,因为大多数程序在需要在 CPU 上花费时间之前,会花很多时间来等待事情的发生。最后,COMMAND 是用来启动程序的命令。auxww
,a
显示所有用户的所有运行进程的信息,u
显示进程所有者的用户名和内存使用情况,x
显示守护进程的信息,ww
使ps(1)显示每个进程的完整命令行,而不是在它太长而无法在屏幕上显示时截断它。1% top2last pid: 9609; load averages: 0.56, 0.45, 0.36 up 0+00:20:03 10:21:463107 processes: 2 running, 104 sleeping, 1 zombie4CPU: 6.2% user, 0.1% nice, 8.2% system, 0.4% interrupt, 85.1% idle5Mem: 541M Active, 450M Inact, 1333M Wired, 4064K Cache, 1498M Free6ARC: 992M Total, 377M MFU, 589M MRU, 250K Anon, 5280K Header, 21M Other7Swap: 2048M Total, 2048M Free89PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND10557 root 1 -21 r31 136M 42296K select 0 2:20 9.96% Xorg118198 dru 2 52 0 449M 82736K select 3 0:08 5.96% kdeinit4128311 dru 27 30 0 1150M 187M uwait 1 1:37 0.98% firefox13431 root 1 20 0 14268K 1728K select 0 0:06 0.98% moused149551 dru 1 21 0 16600K 2660K CPU3 3 0:01 0.98% top152357 dru 4 37 0 718M 141M select 0 0:21 0.00% kdeinit4168705 dru 4 35 0 480M 98M select 2 0:20 0.00% kdeinit4178076 dru 6 20 0 552M 113M uwait 0 0:12 0.00% soffice.bin182623 root 1 30 10 12088K 1636K select 3 0:09 0.00% powerd192338 dru 1 20 0 440M 84532K select 1 0:06 0.00% kwin201427 dru 5 22 0 605M 86412K select 1 0:05 0.00% kdeinit4Copied!
-s
指定不同的间隔时间。Segmentation Violation
信号 (SIGSEGV)。如果一个应用程序被写成使用 alarm(3) 系统调用,在一段时间后被提醒,它将被发送“Alarm”信号 (SIGALRM)。Procedure:向一个进程发送信号。这个例子显示了如何向 inetd(8) 发送一个信号。inetd(8) 的配置文件是/etc/inetd.conf
,inetd(8) 在被发送 SIGHUP 时将重新读取这个配置文件。1.使用 pgrep(1)找到要发送信号的进程的 PID。在这个例子中,inetd(8)的 PID 是 198。1% pgrep -l inetd2198 inetdCopied!2.使用 kill(1) 来发送信号。由于 inetd(8)是由 root 拥有的,所以先用 su(1)成为 root。1% su2Password:3# /bin/kill -s HUP 198Copied!
kill: PID: Operation not permitted
将被显示。误填 PID 会将信号发送到错误的进程,这可能会产生负面的结果,或者将信号发送到一个当前没有使用的 PID,导致错误kill: PID: No such process
。注意: 为什么使用/bin/kill?许多 shell 将 kill 作为一个内置的命令,意味着将直接用 shell 发送信号,而不是运行/bin/kill
。请注意,不同的 shell 有不同的语法来指定要发送的信号的名称。与其尝试学习所有这些语法,不如指定 /bin/kill 更简单。
重要: 杀死系统中的随机进程是一个坏主意。特别是 init(8),PID
为1
,很特别。运行/bin/kill -s KILL 1
是一个快速的、不推荐的关闭系统的方法。在按下返回键之前,一定要仔细检查 kill(1)的参数。