Linux skill命令介绍
skill命令是用来向指定的进程发送信号的,它可以用来终止、挂起、继续或者改变进程的优先级。skill命令的全称是signal kill,它是procps-ng软件包中的一个工具。
Linux skill命令适用的Linux版本
skill命令可以在多数Linux发行版(如Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora、Raspbian)的主要终端命令解释器(包括bash、zsh、csh、ksh、fish、tcsh)中使用,但是在一些较新的系统中,它可能被pkill命令所取代。如果你的系统没有skill命令,你可以尝试安装procps-ng软件包,或者使用pkill命令代替。下面是在不同的Linux发行版中安装procps-ng软件包的命令:
- 在基于Debian的系统中(如Ubuntu),使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install procps
- 在基于Red Hat的系统中(如CentOS),使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum install procps-ng
- 在基于Arch的系统中(如Manjaro),使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S procps-ng
Linux skill命令的基本语法
skill命令的基本语法格式如下:
skill [options] signal [processes]
其中,options是可选的参数,用来指定发送信号的条件或方式;signal是要发送的信号的名称或编号;processes是要操作的进程的标识,可以是进程ID(PID)、进程组ID(PGID)、会话ID(SID)、用户ID(UID)或者终端(TTY)。
Linux skill命令的常用选项说明
skill命令的常用选项有以下几个:
选项 | 说明 |
---|---|
-l | 列出所有可用的信号名称和编号 |
-w | 等待所有匹配的进程终止后再退出 |
-c | 匹配进程的名称,而不是进程的ID |
-v | 显示操作的结果 |
-s | 指定要发送的信号的名称或编号 |
-p | 只打印匹配的进程的ID,而不发送任何信号 |
Linux skill命令的实例
下面是一些使用skill命令的常见实例:
- 列出所有可用的信号名称和编号:
[linux@bashcommandnotfound.cn ~]$ skill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
- 向进程ID为1234的进程发送终止信号(SIGTERM):
[linux@bashcommandnotfound.cn ~]$ skill -TERM 1234
- 向进程名称为firefox的所有进程发送终止信号(SIGTERM),并显示操作的结果:
[linux@bashcommandnotfound.cn ~]$ skill -c -v -TERM firefox
kill 1234: success
kill 5678: success
- 向用户ID为1000的所有进程发送挂起信号(SIGSTOP),并等待所有进程停止后再退出:
[linux@bashcommandnotfound.cn ~]$ skill -w -STOP 1000
- 向终端为pts/0的所有进程发送继续信号(SIGCONT):
[linux@bashcommandnotfound.cn ~]$ skill -CONT pts/0
- 只打印进程名称为python的所有进程的ID,而不发送任何信号:
[linux@bashcommandnotfound.cn ~]$ skill -c -p python
1234
5678
Linux skill命令的注意事项
- skill命令不能发送信号给内核或者init进程。
- skill命令不能发送信号给比自己权限高的进程,例如root用户的进程。
- skill命令不能撤销已经发送的信号,如果发送了错误的信号,可能会导致进程的异常终止或者数据的丢失。
- 如果你的系统没有skill命令,你可能会看到以下的错误信息:bash: skill: command not found
你可以尝试安装procps-ng软件包,或者使用pkill命令代替。
评论区