专栏首页云计算教程系列如何使用killall和kill命令来停止进程
原创

如何使用killall和kill命令来停止进程

killall是一个基于名称终止系统上运行进程的工具。kill则是终止基于进程ID号(PID)的进程。killkillall还可以向进程发送特定的系统信号。

使用killallkill以及ps负责管理和结束被卡住或无响应的流程。在本教程中,在每个示例中将[process name]替换您要终止的进程的名称。

要学习本教程,您需要一台已经设置好可以使用sudo命令的非root账号的CentOS服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器

用法

如何使用killall

killall命令采用以下形式:

killall [process name]

killall将终止与指定名称匹配的所有程序。killall发送SIGTERM信号,它终止与指定名称匹配的正在运行的进程。您可以使用以下-s选项指定不同的信号:

killall -s 9 [process name]

这发送SIGKILL信号,您还可以使用以下格式之一指定信号:

killall -KILL [process name]
killall -SIGKILL [process name]
killall -9 [process name]

如何使用kill

kill命令终止其PID指定的各个进程。

命令采用以下形式:

kill [PID]

如果没其他选项,则kill发送SIGTERM到指定的PID并要求应用程序或服务自行关闭。

在一个kill命令中可以指定多个pid和备用系统信号。下面的示例都将SIGKILL信号发送到指定的PID:

kill -s KILL [PID]
kill -KILL [PID]

系统信号

kill命令不会直接终止进程。相反,一个信号被发送到进程,如果进程接收到一个给定的信号,进程将有相应的指令。手册页提供了所有可用信号的进一步参考::

man 7 signal
Standard signals
Linux supports the standard signals listed below. Several signal numbers are architecture-dependent, as indicated in the "Value" column. Where
three values are given, the first one is usually valid for alpha and sparc, the middle one for x86, arm, and most other architectures, and the last
one for mips. (Values for parisc are not shown; see the Linux kernel source for signal numbering on that architecture.) A dash (-) denotes that a
signal is absent on the corresponding architecture.
​
First the signals described in the original POSIX.1-1990 standard.
​
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
SIGHUP 1 Term Hangup detected on controlling terminal
or death of controlling process
SIGINT 2 Term Interrupt from keyboard
SIGQUIT 3 Core Quit from keyboard
SIGILL 4 Core Illegal Instruction
SIGABRT 6 Core Abort signal from abort(3)
SIGFPE 8 Core Floating-point exception
SIGKILL 9 Term Kill signal
SIGSEGV 11 Core Invalid memory reference
SIGPIPE 13 Term Broken pipe: write to pipe with no
readers; see pipe(7)
SIGALRM 14 Term Timer signal from alarm(2)
SIGTERM 15 Term Termination signal
SIGUSR1 30,10,16 Term User-defined signal 1
SIGUSR2 31,12,17 Term User-defined signal 2
SIGCHLD 20,17,18 Ign Child stopped or terminated
SIGCONT 19,18,25 Cont Continue if stopped
SIGSTOP 17,19,23 Stop Stop process
SIGTSTP 18,20,24 Stop Stop typed at terminal
SIGTTIN 21,21,26 Stop Terminal input for background process
SIGTTOU 22,22,27 Stop Terminal output for background process
​
The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.

简单地列出所有可用的信号,而不包含它们的描述:

kill -l
killall -l

如果需要将信号名称转换为信号编号,或将信号编号转换为信号名称,请使用以下示例:

$ kill -l 9
KILL
​
$ kill -l kill
9

查找正在运行的进程

使用像htoptop这样的实用程序来查看进程的实时列表及其对系统资源的消耗。

使用ps命令查看当前正在运行的进程及其pid。下面的示例使用grep过滤当前为字符串emacs运行的所有进程列表:

$ ps aux | grep "emacs"
username  3896  0.0  2.2  56600 44468 ?        Ss   Sep30   4:29 emacs
username 22843  0.0  0.0   3900   840 pts/11   S+   08:49   0:00 grep emacs

左边第二列中列出的数字是PID,在emacs过程中是3896grep进程总是与自己匹配以进行简单的搜索,就像第二个结果一样。

注意 您可以使用命令ps auxf查看所有正在运行的进程的分层树。

获得PID或进程名称后,使用killallkill终止上述过程。

找到PID的另一个选择是pgrep

pgrep [process name]

验证流程终止

-w选项添加到killall命令,将使killall等待进程终止后退出。考虑下面的命令:

killall -w irssi

这个示例将SIGTERM系统信号发送给一个后台进程,该进程的名称与irssi匹配。killall将等待匹配的进程结束。如果没有进程匹配指定的名称,killall将返回一条错误消息:

$ killall -w irssi
irssi: no process found

总结

怎样,你学会了嘛?赶快购买服务器尝试下吧!想要学习更多相关知识,请访问腾讯云云+社区


参考文献:《Use killall and kill Commands to Stop Processes on Linux》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在 Linux 上使用 kill 和 killall 命令来管理进程

    在 Linux 中,每个程序和 守护程序(daemon)都是一个“ 进程(process)”。 大多数进程代表一个正在运行的程序。而另外一些程序可以派生出其他...

    用户8639654
  • 如何在 Linux 上使用 kill 和 killall 来管理进程

    你可以使用 ps 命令来查看正在运行的进程。你通常会使用 ps 命令的参数来显示出更多的输出信息。我喜欢使用 -e 参数来查看每个正在运行的进程,以及 -f 参...

    用户9236362
  • 【Linux随笔】Killall 、Kill 、Pkill三个命令之间的区别

    首先三个命令都是用于杀掉进程的,不过kill是杀掉单个进程,killall是杀掉所有同名进程,pkill是杀掉一类进程或者某个用户的所有进程。

    浩Coding
  • 【Linux随笔】Killall 、Kill 、Pkill三个命令之间的区别

    首先三个命令都是用于杀掉进程的,不过kill是杀掉单个进程,killall是杀掉所有同名进程,pkill是杀掉一类进程或者某个用户的所有进程。

    浩Coding
  • 如何快速终止Linux进程

    当你打开某个程序时,可能会遇到程序会锁死、停止运行、或者意外死机。你尝试再次运行该程序,系统反馈说原来的进程没有完全关闭。

    丰一川
  • 使用 kill 和 killall 在 Linux 上管理进程

    在 Linux 中,每个程序和守护进程都是一个“进程”。大多数进程代表一个正在运行的程序。其他程序可以分叉其他进程,例如监听某些事情发生然后响应它们的进程。并且...

    施主-借个火
  • 10-3 信号

    见贤思齊
  • Kill杀死进程方法大全

    名称:kill  使用权限:所有使用者  使用方式:  kill [ -s signal | -p ] [ -a ] pid ...  kill -l [ si...

    阳光岛主
  • 每天学一个 Linux 命令(90):kill/killall

    kill 命令用于删除执行中的程序或工作。kill 命令向进程发送信号。如果您未指定要发送的信号,则默认情况下会发送 TERM 信号,从而终止该过程。

    民工哥
  • linux常用命令~系统常用命令

    jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实...

    Vincent-yuan
  • Linux之kill命令基本使用

    若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用 kill 命令来完成此项任务。

    兮动人
  • Linux kill, killall, kill -9

    root     15087  0.0  0.0      0     0 ?        S    23:31   0:00 [kworker/1:1] r...

    阳光岛主
  • 杀死进程的N种姿势你知道吗

    你是如何终止你的程序的?在《killall为什么找不到你的进程》一文中提到了几个杀死进程的方法,本文来总结一下有哪些方法可以终止进程。

    编程珠玑
  • 三分钟基础:杀死进程的N种姿势你知道吗

    你是如何终止你的程序的?在《killall为什么找不到你的进程》一文中提到了几个杀死进程的方法,本文来总结一下有哪些方法可以终止进程。

    帅地
  • Linux进程及作业管理

    一、进程查看及其管理工具 ps命令:报告当前进程的快照信息 ps - report a snapshot of the current processes....

    小小科
  • Linux 命令(76)—— kill 命令

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    Dabelv
  • Linux 命令(77)—— killall 命令

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    Dabelv
  • Linux之killall命令

    原文链接:https://rumenz.com/rumenbiji/linux-killall.html

    入门笔记
  • 终止进程的方法

    kill -9 PID 如果知道进程名称,可以使用killall杀死该名称的所有进程。 killall -9 name

    hankfu

扫码关注云+社区

领取腾讯云代金券