700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux ubuntu kill指令和killall指令的区别(killall会终止所有与该名字匹配的进程)

linux ubuntu kill指令和killall指令的区别(killall会终止所有与该名字匹配的进程)

时间:2023-09-21 06:10:45

相关推荐

linux ubuntu kill指令和killall指令的区别(killall会终止所有与该名字匹配的进程)

参考文章1:kill 和killall----杀死进程

参考文章2:如何使用killall和kill命令来停止进程

参考文章3:在 Linux 上使用 kill 和 killall 命令来管理进程 | Linux 中国

文章目录

用法如何使用killall如何使用kill系统信号查找正在运行的进程killall详细解释

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

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

用法

如何使用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 signalsLinux supports the standard signals listed below. Several signal numbers are architecture-dependent, as indicated in the "Value" column. Wherethree 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 lastone for mips. (Values for parisc are not shown; see the Linux kernel source for signal numbering on that architecture.) A dash (-) denotes that asignal 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 terminalor death of controlling processSIGINT 2 Term Interrupt from keyboardSIGQUIT 3 Core Quit from keyboardSIGILL 4 Core Illegal InstructionSIGABRT 6 Core Abort signal from abort(3)SIGFPE 8 Core Floating-point exceptionSIGKILL 9 Term Kill signalSIGSEGV 11 Core Invalid memory referenceSIGPIPE 13 Term Broken pipe: write to pipe with noreaders; see pipe(7)SIGALRM 14 Term Timer signal from alarm(2)SIGTERM 15 Term Termination signalSIGUSR1 30,10,16 Term User-defined signal 1SIGUSR2 31,12,17 Term User-defined signal 2SIGCHLD 20,17,18 Ign Child stopped or terminatedSIGCONT 19,18,25 Cont Continue if stoppedSIGSTOP 17,19,23 Stop Stop processSIGTSTP 18,20,24 Stop Stop typed at terminalSIGTTIN 21,21,26 Stop Terminal input for background processSIGTTOU 22,22,27 Stop Terminal output for background process​The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.

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

kill -lkillall -l

[root@RV1126_RV1109:~]# kill -l1) HUP2) INT3) QUIT4) ILL5) TRAP6) ABRT7) BUS8) FPE9) KILL10) USR111) SEGV12) USR213) PIPE14) ALRM15) TERM16) STKFLT17) CHLD18) CONT19) STOP20) TSTP21) TTIN22) TTOU23) URG24) XCPU25) XFSZ26) VTALRM27) PROF28) WINCH29) POLL30) PWR31) SYS32) RTMIN64) RTMAX

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

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

查找正在运行的进程

使用像htoptop这样的实用程序来查看进程的实时列表及其对系统资源的消耗。(我的arm-linux没有htop命令!!!)

使用ps命令查看当前正在运行的进程及其pid。下面的示例使用grep过滤当前为字符串mediaserver运行的所有进程列表:(加不加字符串符号好像都可以。。。)

[root@RV1126_RV1109:~]# ps -aux | grep mediaserverroot690 0.0 0.3 6084 3040 pts/0 S 13:53 0:02 ipc-daemon --no-mediaserverroot741 8.6 10.0 655072 87580 pts/0 Sl 13:53 4:59 mediaserver -c /oem/usr/share/mediaserver/rv1109/ipc.confroot996 0.0 0.0 2056 224 pts/2 S+ 14:51 0:00 grep mediaserver[root@RV1126_RV1109:~]#

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

注意

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

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

找到PID的另一个选择是pgrep。

[root@RV1126_RV1109:~]# pgrep mediaserver741

验证流程终止

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

killall -w irssi

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

$ killall -w irssiirssi: no process found

但是我的怎么是这样的???

[root@RV1126_RV1109:~]# killall -w mediaserverkillall: bad signal name 'w'[root@RV1126_RV1109:~]# [root@RV1126_RV1109:~]# killall -w irssikillall: bad signal name 'w'

killall详细解释

介绍 killall 命令

一次终止多个进程有个更简单方法,使用 killall 命令。你或许可以根据名称猜测出,killall 会终止所有与该名字匹配的进程。这意味着我们可以使用此命令来停止所有流氓 Chromium 进程。这很简单:

$ killall /usr/lib64/chromium-browser/chromium-browser

但是要小心使用 killall。该命令能够终止与你所给出名称相匹配的所有进程。这就是为什么我喜欢先使用ps -ef命令来检查我正在运行的进程,然后针对要停止的命令的准确路径运行 killall。

你也可以使用 -i 或 --interactive 参数,来让 killkill 在停止每个进程之前提示你。(额我的arm linux没有-i参数。。。)

killall 还支持使用 -o 或 --older-than 参数来查找比特定时间更早的进程。例如,如果你发现了一组已经运行了好几天的恶意进程,这将会很有帮助。又或是,你可以查找比特定时间更晚的进程,例如你最近启动的失控进程。使用 -y 或 --young-than 参数来查找这些进程。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。