linux终极命令 linux终端指令大全( 三 )


USER PID %CPU %MEM TTY STAT COMMAND
root 1 0.0 0.1 ? S init [2]
105 7783 0.0 0.2 ? Ss /usr/bin/dbus-daemon --system
hal 7796 0.0 0.7 ? Ss /usr/sbin/hald
postfix 7957 0.0 0.2 ? S qmgr -l -t fifo -u -c
nagios 8371 0.0 0.2 ? SNs /usr/sbin/nagios /etc/nagios/nagios.cfg
这个输出是经过简化的 。你在系统中可以看到更多的行和栏目 。如果某些进程消耗了你的全部CPU或者内存,你可以在这个输出的%CPU和%MEM 列中发现它们 。找到失控的进程的一种更快捷的方法是使用top命令,因为按照默认的设置,使用占用CPU资源最多的进程在最上面显示 。我们可以使用一条 “yes”命令来测试一下:
$ yes carla is teh awesum
这个命令将以很高的速度反复显示“carla is teh awesum” , 直到你停止它运行 。这将使你的CPU使用率达到警戒线 。
$ top
...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12144 carla 25 0 31592 17m 13m R 93.4 3.5 0:50.26 konsole
22236 carla 15 0 2860 468 400 S 4.3 0.1 0:00.97 yes
分析一下这个结果,你会发现一些有趣的事,你会发现,占用CPU最多的程序是konsole虚拟终端程序,而不是“yes”命令 , 这是因为 “yes”命令是在konsole终端程序中运行的 。如果在一个“真正的”控制台(按Ctrl+alt+f2键)中运行同样的命令序列,你将看到 “yes”命令被排在第一位 。
有许多停止“yes”命令运行的方式 。如果你要回到运行它的shell中,按CTRL+c键就可以了 。或者你可以在另一个shell中用“kill”命令停止“yes”命令的运行,Kill命令后面跟PID或者命令名称,如下如示:
$ kill 22236
或者
$ killall yes
按CTRL+c键发出一个SIGINT(信号2),这个信号是键盘要求取得控制权的中断信号 。kill和killall这两个命令按照默认的设 置都发出一个SIGTERM信号(编号15) 。程序中可以设置对SIGTERM信号(15)是捕捉或者忽略,或者以不同的方式解释 。因此,如果你的程序对 于 KILL命令的反应与你预期不同,很可能是被KILL的目标程序的问题 。
终止一个父进程通常也终止了它的子进程 。不过,情况并不总是如此 。你知道子进程是什么吗?使用ps命令加上-f选项就可以看到,如下所示:
$ ps axf
22371 ? R 2:35 _ konsole [kdeinit]
22372 pts/3 Ss 0:00 | _ /bin/bash
24322 pts/3 S+ 0:00 | | _ yes carla is teh awesum
22381 pts/4 Rs 0:00 | _ /bin/bash
24323 pts/4 R+ 0:00 | | _ ps axf
现在,回到SIGHUP的话题
SIGHUP的发音是“sig-hup”,是signal hangup的缩写,含义是“中止信号” 。你如何发送一个SIGHUP信号呢?这里有几种方式:
# kill -HUP [pid]
# killall -HUP [process-name]
# kill -1 [pid]
# killall -1 [process-name]
因此,你可以使用PID或者名称,信号名称或者号码 。那么为什么要这样做而不使用/etc/init.d/foo命令重新启动呢?使用它们自己 的 init(初始化)文件来控制服务是优先选择的方式 , 因为这些文件通常包含健全和错误检查以及额外的功能 。使用“kill”命令和信号的主要原因是尽可能 明确地终止挂起和失控的进程,而不必重新启动或者登出 。
终止进程
正如你在关于信号的man page中所看到的,有十几种控制进程的方法 。下面是一些常用的方法:
kill -STOP [pid]
发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程 。
kill -CONT [pid]
发送SIGCONT (19,18,25)重新开始一个停止的进程 。
kill -KILL [pid]
发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作 。
kill -9 -1
终止你拥有的全部进程 。
SIGKILL和SIGSTOP信号不能被捕捉、封锁或者忽略,但是,其它的信号可以 。所以这是你的终极武器 。

推荐阅读