如何使用示例杀死Linux中的进程
介绍
当Linux系统中的某个进程开始出现异常行为时,瞬间就来了,而作为管理员,我们需要为了整个系统的健康而停止该进程。以下实用程序将找到并停止该过程。
众所周知,在继续之前,每个Linux进程都有一个进程标识(PID),我们将必须寻找感兴趣的特定PID。为此,我们可以使用以下工具
使用ps命令
此命令报告当前进程的快照。
要列出所有进程,只需运行
$ps -A
要过滤输出,我们可以使用管道来达到所需的确切过程,例如
$ps aux | grep apa
这将列出所有进程名称中带有上述字母的进程。从那里,我们可以缩小范围并获取罪魁祸首的准确PID。
作为命令库的替代品,我们还可以使用pidof或者pgrep,如下所示
$pidof zsh
那将返回zsh进程的PID
$pgrep zsh
这还将返回zsh进程的PID。
发现PID之后,下一步就是停止该过程。例如,这里有各种工具:kill,killall,pkill,top和其他工具。
我们必须意识到,只要我们具有停止进程本身的正确权限,这些命令就可以工作。如果我们没有杀死其他用户进程的足够权限,则它们将无法工作。但是,我们将能够杀死自己的进程。
可以猜到的超级用户是超级用户,它可以杀死属于系统中任何其他用户的任何进程。
在Linux上使用kill命令杀死进程
kill向进程发送信号。信号可以是:SIGHUP,可以用1表示并导致进程挂起SIGKILL,可以用9表示并导致进程被非正常杀死SIGTERM可以用15表示并导致进程被正常杀死
如果执行不带选项的kill命令,则默认情况下使用SIGTERM。
杀掉进程
使用PID 7089终止进程,而不保存任何打开的文件
$kill -9 7089 $kill -SIGKILL 7089
确保已保存所有文件后,使用PID 7080终止进程。这很好地终止了该过程:
$kill -15 7080 $kill -SIGTERM 7080
我们可以利用的另一个命令是killall命令。如果我们知道进程的名称,则无需查找其PID。 killall按名称将其杀死,如下所示。
有关更多选项,请运行:
$man kill
使用killall命令在Linux上终止进程
killall命令按上面指定的名称杀死进程。做就是了:
$killall httpd
要了解更多信息,请查看手册页:
$man killall
使用pkill命令在Linux上终止进程
根据名称和其他属性发出信号
pkill的工作方式与killall类似。它的语法很简单:
$pkill [options] pattern
pkill根据名称和其他属性向进程发送信号。
如果我们知道要传递命令的进程的名称以及如下所示的进程的名称,则使用pkill非常简单。默认情况下,它使用SIGTERM信号,但可以根据需要更改。
$pkill nginx
所有命令选项:
$pkill --help Usage: pkill [options] <pattern> Options: -<sig>, --signal <sig> signal to send (either number or name) -e, --echo display what is killed -c, --count count of matching processes -f, --full use full process name to match -g, --pgroup <PGID,...> match listed process group IDs -G, --group <GID,...> match real group IDs -i, --ignore-case match case insensitively -n, --newest select most recently started -o, --oldest select least recently started -P, --parent <PPID,...> match only child processes of the given parent -s, --session <SID,...> match session IDs -t, --terminal <tty,...> match by controlling terminal -u, --euid <ID,...> match by effective IDs -U, --uid <ID,...> match by real IDs -x, --exact match exactly with the command name -F, --pidfile <file> read PIDs from file -L, --logpidfile fail if PID file is not locked --ns <PID> match the processes that belong to the same namespace as <pid> --nslist <ns,...> list which namespaces will be considered for the --ns option. Available namespaces: ipc, mnt, net, pid, user, uts -h, --help display this help and exit -V, --version output version information and exit
使用top命令在Linux上终止进程
我们可以使用top命令在进程运行时通过其交互式会话杀死该进程。
要直接从顶部界面取消进程,请按k。它将询问我们要杀死的进程的PID。输入PID,然后按Enter。它用
top - 10:07:55 up 1 day, 22:09, 0 users, load average: 0.52, 0.58, 0.59 Tasks: 4 total, 1 running, 3 sleeping, 0 stopped, 0 zombie %Cpu(s): 4.7 us, 3.5 sy, 0.0 ni, 91.0 id, 0.0 wa, 0.7 hi, 0.0 si, 0.0 st KiB Mem : 16669896 total, 2348244 free, 14092300 used, 229352 buff/cache KiB Swap: 50331648 total, 49101952 free, 1229696 used. 2443864 avail Mem PID to signal/kill [default pid = 1] 10000
默认情况下,它使用SIGTERM信号,如下所示。只需再次按Enter键,top即可完成其余工作。
top - 10:07:55 up 1 day, 22:09, 0 users, load average: 0.52, 0.58, 0.59 Tasks: 4 total, 1 running, 3 sleeping, 0 stopped, 0 zombie %Cpu(s): 4.7 us, 3.5 sy, 0.0 ni, 91.0 id, 0.0 wa, 0.7 hi, 0.0 si, 0.0 st KiB Mem : 16669896 total, 2348244 free, 14092300 used, 229352 buff/cache KiB Swap: 50331648 total, 49101952 free, 1229696 used. 2443864 avail Mem Send pid 10000 signal [15/sigterm]
要了解更多信息,请查看手册页:
$man top