Linux skill命令介绍
skill
命令是用来发送信号或报告进程状态的。这个命令的默认信号是TERM。然而,这个命令已经被认为是过时和不可移植的,其命令语法定义得很差。建议使用killall
,pkill
,和pgrep
命令代替。
Linux skill命令适用的Linux版本
skill
命令在大多数Linux发行版中都可以使用,包括Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora和Raspbian。如果在某些Linux发行版中无法使用,可以尝试安装procps
或procps-ng
包来获取这个命令。
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install procps # Debian/Ubuntu
[linux@bashcommandnotfound.cn ~]$ sudo yum install procps-ng # RedHat/CentOS7
[linux@bashcommandnotfound.cn ~]$ sudo dnf install procps-ng # RedHat/CentOS8/Fedora
[linux@bashcommandnotfound.cn ~]$ sudo apk add procps # Alpine
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S procps-ng # Arch Linux/Manjaro
Linux skill命令的基本语法
skill [signal] [options] expression
Linux skill命令的常用选项或参数说明
选项 | 说明 |
---|---|
-f, --fast | 快速模式。这个选项尚未实现 |
-i, --interactive | 交互式使用。你将被要求批准每个操作 |
-l, --list | 列出所有信号名称 |
-L, --table | 以表格形式列出所有信号名称 |
-n, --no-action | 不执行任何操作;模拟会发生的事件,但实际上不会改变系统 |
-v, --verbose | 详细模式;解释正在做什么 |
-w, --warnings | 启用警告。这个选项尚未实现 |
-h, --help | 显示帮助文本并退出 |
-V, --version | 显示版本信息 |
Linux skill命令实例详解
实例1:发送TERM信号
[linux@bashcommandnotfound.cn ~]$ skill -v -t pts/3
这个命令会向pts/3
终端上的所有进程发送TERM信号,结束这些进程。-v
选项使命令在执行时提供详细的输出。
实例2:以交互方式发送信号
[linux@bashcommandnotfound.cn ~]$ skill -i -KILL -u username
这个命令会向用户名为username
的用户的所有进程发送KILL信号,结束这些进程。-i
选项使命令在发送信号前询问用户是否确认。
实例3:发送STOP信号
[linux@bashcommandnotfound.cn ~]$ skill -STOP -t pts/3
这个命令会向pts/3
终端上的所有进程发送STOP信号,暂停这些进程。
实例4:发送CONT信号
[linux@bashcommandnotfound.cn ~]$ skill -CONT -t pts/3
这个命令会向pts/3
终端上的所有进程发送CONT信号,恢复这些进程的运行。
实例5:以交互方式发送信号到指定进程
[linux@bashcommandnotfound.cn ~]$ skill -i -KILL -p 12345
这个命令会向进程ID为12345
的进程发送KILL信号,结束这个进程。-i
选项使命令在发送信号前询问用户是否确认。
实例6:发送信号到指定用户和终端的进程
[linux@bashcommandnotfound.cn ~]$ skill -KILL -u username -t pts/3
这个命令会向用户名为username
的用户在pts/3
终端上的所有进程发送KILL信号,结束这些进程。
实例7:发送信号到指定组的进程
[linux@bashcommandnotfound.cn ~]$ skill -KILL -g groupname
这个命令会向组名为groupname
的组的所有进程发送KILL信号,结束这些进程。
实例8:发送信号到指定会话的进程
[linux@bashcommandnotfound.cn ~]$ skill -KILL -s sessionid
这个命令会向会话ID为sessionid
的会话的所有进程发送KILL信号,结束这些进程。
实例9:发送信号到指定进程组的进程
[linux@bashcommandnotfound.cn ~]$ skill -KILL -P processgroupid
这个命令会向进程组ID为processgroupid
的进程组的所有进程发送KILL信号,结束这些进程。
实例10:发送信号到指定父进程的子进程
[linux@bashcommandnotfound.cn ~]$ skill -KILL -pp parentprocessid
这个命令会向父进程ID为parentprocessid
的父进程的所有子进程发送KILL信号,结束这些进程。
实例11:发送信号到指定终端的进程
[linux@bashcommandnotfound.cn ~]$ skill -KILL -t pts/3
这个命令会向pts/3
终端上的所有进程发送KILL信号,结束这些进程。
实例12:发送信号到指定用户的进程
[linux@bashcommandnotfound.cn ~]$ skill -KILL -u username
这个命令会向用户名为username
的用户的所有进程发送KILL信号,结束这些进程。
实例13:发送信号到指定进程
[linux@bashcommandnotfound.cn ~]$ skill -KILL -p processid
这个命令会向进程ID为processid
的进程发送KILL信号,结束这个进程。
实例14:发送信号到指定进程名的进程
[linux@bashcommandnotfound.cn ~]$ skill -KILL processname
这个命令会向进程名为processname
的所有进程发送KILL信号,结束这些进程。
实例15:发送信号到指定进程名和用户的进程
[linux@bashcommandnotfound.cn ~]$ skill -KILL processname username
这个命令会向进程名为processname
且用户名为username
的用户的所有进程发送KILL信号,结束这些进程。如果进程名和用户名的顺序颠倒,命令的效果是一样的。
Linux skill命令的注意事项
skill
命令已经被认为是过时和不可移植的,建议使用killall
,pkill
,和pgrep
命令代替。- 如果在使用
skill
命令时遇到bash: skill: command not found
错误,可以尝试安装procps
或procps-ng
包来获取这个命令。