killall
命令是Linux中最常用的命令之一,用于通过进程名而非进程ID来向进程发送信号。本文将详细介绍killall
命令的用法,并给出具体的示例。
1. 基本语法
killall
的基本语法如下:
killall [options] [signal] program ...
[options]
:可选参数,用于控制发送信号的行为。[signal]
:可选的信号名称或编号。program ...
:要发送信号的程序名称或正则表达式。
2. 常用选项
2.1 -l
列出所有信号名称及其编号。
示例:
列出所有信号名称及其编号:
killall -l
2.2 -s
SIGNAL
指定信号名称。
示例:
向名为myprogram
的进程发送SIGTERM
信号:
killall -s SIGTERM myprogram
2.3 -n
SIGNAL_NUMBER
指定信号编号。
示例:
向名为myprogram
的进程发送编号为15的信号:
killall -n 15 myprogram
2.4 -v
详细模式,显示信号名称和进程信息。
示例:
详细模式发送SIGTERM
信号给名为myprogram
的进程:
killall -v -s SIGTERM myprogram
2.5 -q
不显示错误消息。
示例:
不显示错误消息发送SIGTERM
信号给名为myprogram
的进程:
killall -q -s SIGTERM myprogram
2.6 -9
强制发送SIGKILL
信号,立即终止进程。
示例:
强制发送SIGKILL
信号给名为myprogram
的进程:
killall -9 myprogram
2.7 -i
交互模式,询问是否发送信号。
示例:
交互模式发送SIGTERM
信号给名为myprogram
的进程:
killall -i -s SIGTERM myprogram
2.8 -u
USERNAME
指定用户名,只对属于该用户的进程发送信号。
示例:
向属于用户john
且名为myprogram
的进程发送SIGTERM
信号:
killall -u john -s SIGTERM myprogram
2.9 -x
扩展模式,允许使用正则表达式匹配进程名。
示例:
向所有以myprogram
开头的进程发送SIGTERM
信号:
killall -x -s SIGTERM myprogram*
2.10 -r
REGEXP
指定正则表达式,只对匹配的进程发送信号。
示例:
向所有以myprogram
开头的进程发送SIGTERM
信号:
killall -r -s SIGTERM '^myprogram'
2.11 -w
延迟发送信号,等待一段时间后发送。
示例:
延迟发送SIGTERM
信号给名为myprogram
的进程:
killall -w -s SIGTERM myprogram
2.12 -h
显示帮助信息。
示例:
显示killall
命令的帮助信息:
killall -h
2.13 -V
显示版本信息。
示例:
显示killall
命令的版本信息:
killall -V
3. 常见信号
以下是一些常见的信号名称及其编号:
SIGHUP
(1):挂起信号。SIGINT
(2):中断信号。SIGQUIT
(3):退出信号。SIGILL
(4):非法指令信号。SIGTRAP
(5):跟踪陷阱信号。SIGABRT
(6):程序异常终止信号。SIGBUS
(7):总线错误信号。SIGFPE
(8):浮点异常信号。SIGKILL
(9):强制终止信号。SIGUSR1
(10):用户定义信号1。SIGSEGV
(11):段错误信号。SIGUSR2
(12):用户定义信号2。SIGPIPE
(13):管道破裂信号。SIGALRM
(14):定时器信号。SIGTERM
(15):终止信号。SIGSTKFLT
(16):堆栈故障信号。SIGCHLD
(17):子进程状态变化信号。SIGCONT
(18):继续执行信号。SIGSTOP
(19):停止执行信号。SIGTSTP
(20):停止终端输入信号。SIGTTIN
(21):后台进程试图从控制终端读取信号。SIGTTOU
(22):后台进程试图写入控制终端信号。SIGURG
(23):紧急数据可用信号。SIGXCPU
(24):CPU使用时间超过限制信号。SIGXFSZ
(25):文件大小超过限制信号。SIGVTALRM
(26):虚拟定时器信号。SIGPROF
(27):CPU使用时间或虚拟内存使用时间超过限制信号。SIGWINCH
(28):窗口大小改变信号。SIGIO
(29):I/O可能变得可访问信号。SIGPWR
(30):电源失败恢复信号。SIGSYS
(31):无效系统调用信号。
4. 实战案例
4.1 向名为myprogram
的进程发送SIGTERM
信号
向名为myprogram
的进程发送SIGTERM
信号:
killall -s SIGTERM myprogram
4.2 向名为myprogram
的进程发送编号为15的信号
向名为myprogram
的进程发送编号为15的信号:
killall -n 15 myprogram
4.3 详细模式发送SIGTERM
信号给名为myprogram
的进程
详细模式发送SIGTERM
信号给名为myprogram
的进程:
killall -v -s SIGTERM myprogram
4.4 不显示错误消息发送SIGTERM
信号给名为myprogram
的进程
不显示错误消息发送SIGTERM
信号给名为myprogram
的进程:
killall -q -s SIGTERM myprogram
4.5 强制发送SIGKILL
信号给名为myprogram
的进程
强制发送SIGKILL
信号给名为myprogram
的进程:
killall -9 myprogram
4.6 交互模式发送SIGTERM
信号给名为myprogram
的进程
交互模式发送SIGTERM
信号给名为myprogram
的进程:
killall -i -s SIGTERM myprogram
4.7 向属于用户john
且名为myprogram
的进程发送SIGTERM
信号
向属于用户john
且名为myprogram
的进程发送SIGTERM
信号:
killall -u john -s SIGTERM myprogram
4.8 向所有以myprogram
开头的进程发送SIGTERM
信号
向所有以myprogram
开头的进程发送SIGTERM
信号:
killall -x -s SIGTERM myprogram*
4.9 向所有以myprogram
开头的进程发送SIGTERM
信号
向所有以myprogram
开头的进程发送SIGTERM
信号:
killall -r -s SIGTERM '^myprogram'
4.10 延迟发送SIGTERM
信号给名为myprogram
的进程
延迟发送SIGTERM
信号给名为myprogram
的进程:
killall -w -s SIGTERM myprogram
4.11 显示帮助信息
显示killall
命令的帮助信息:
killall -h
4.12 显示版本信息
显示killall
命令的版本信息:
killall -V
请注意,某些命令的选项和语法可能会因不同的Linux发行版和版本而略有不同,请根据实际情况调整命令的具体细节。希望这篇文章能为你带来帮助!