kill命令通常用于终止正在运行的进程,它以进程的ID或名称为参数,向进程发送一个信号,该进程将根据发送的信号采取行动。
目录
- 简介
- 语法
- 命令
- 总结
- 参考文献
介绍
kill命令通常用于终止Linux中的进程,给一个进程的idPID,它发送默认信号SIGTERM,从而终止该进程。
请记住,进程只能被所有者(用户)杀死,用户不能杀死其他用户拥有的进程,用户不能杀死系统使用的进程,最后,根用户可以杀死系统或其他用户的任何进程。
语法
语法如下:
kill [signal or option] PID(s)
kill命令的各种选项包括:
- -l,列出所有信号名称。
- -s -signal, 指定信号名称。
- -n sig, 指定信号编号。
也可以使用killall,它可以同时杀死多个进程。
killall
的各种选项是
- -e, --exact, 在名字很长的情况下检查是否精确匹配。
- -g, --process-group, 杀死一个进程组。
- -y, --younger-than, 杀死比指定时间小的进程。
- -o, --older-than, 杀死超过指定时间的进程。
- -i, --interactive, 在杀死一个进程之前要求确认。
- -l, --list, 列出所有信号名称。
- -q, --quiet, 杀死进程而不打印任何输出。
- -s, --signal SIGNAL, 发送一个信号而不是SIGTERM。
- -u, --user USER,按特定用户杀死进程。
- -n , --ns PID, 杀死与PID相同名称空间的进程。
- -r, --regexp, 杀死由正则表达式匹配的进程。
- -v, --verbose, 打印出调试信息。
- -I, --ignore-case, 匹配一个进程,同时忽略大小写的敏感性。
pkill命令根据进程的名称来杀死它,
常用的选项包括
- -n, 杀死新发现的进程。
- -o, 杀死旧的进程。
- -u, 杀死由指定用户拥有的进程。
- -x, 杀死符合指定模式的进程。
- -signal,杀死具有指定信号的进程。
命令
要查看当前运行的进程,我们可以使用top、ps命令或htop命令。
一个例子
要列出所有正在运行的进程,我们写:
ps -a
或
ps -aux
进程ID
一个PID可以是:
- > 0,(大于0)在这种情况下,信号被发送到一个ID等于PID的进程。
- ==0,信号被发送到当前进程组中的进程,即发送信号的shell的那个GID中的进程。要获得ID,请执行id命令。
- ==-1,信号被发送到所有与执行该命令的用户有相同UID的进程。
- <-1,信号被发送到GID等于PID绝对值的进程组中的所有进程。
为了得到一个进程的ID,我们可以写:
pidof bash
上述命令返回PID osbash进程。
终止进程
kill命令向一个指定的进程或进程组发送一个信号。该信号指定了一个进程将如何被影响。它可以被杀死,重新加载。
为了列出所有的信号名称,我们写道:
kill -l
常用的信号有:1,重新加载一个进程;2,从键盘信号中发送一个中断;9,发送一个杀死信号来杀死进程;15,优雅地杀死一个进程;17、18、23,发送一个信号来停止一个进程。
一个例子
为了向一个PID为2342的进程发送SIGKILL信号,我们写道
kill -9 2342
我们也可以这样写:
kill -SIGKILL 2342
我们也可以通过传递多个进程ID来杀死多个进程,如下所示:
kill -9 7888 2313 6719 6671
我们也可以通过它的名字来杀死一个进程,如下所示:
kill firefox
该命令杀死了一个正在运行的火狐进程。
假设有多个Firefox实例在运行,我们可以使用killall命令:
killall -9 firefox
或通过使用pkill命令:
pkill firefox
要重新加载一个进程的设置,我们可以发送SIGHUP信号:
kill -1 2278
其中2278是我们想要重新加载的进程的PID。
总结
我们使用ps、top或htop命令来获得PID,然后用它来杀死一个进程。我们也可以使用pkill命令用它的名字杀死一个进程。
killall
命令杀死一个进程的所有实例。
你也可以在htop或top窗口中杀死进程。
参考资料
- Linux进程:信号、终止、僵尸、清理。
- 执行man kill或kill --help。
- 对于进程信号,执行kill -l。
- htop