侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux skill命令用法详解:如何向进程发送信号(附实例教程和注意事项)

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命令代替。
0

评论区