信号 | 数值 | 说明 |
SIGHUP | 1 | 在用户终端连接正常或非正常退出时发出,通常是在终端的控制进程结束时,通知同一会话内的各个作业,这时它们与控制终端不再关联。它最初的设计目的是通知进程串行行删除(挂起),在现代系统中,这个信号通常意味着控制伪终端或虚拟终端已经关闭。在接收到这个信号时,许多守护进程将重新加载它们的配置文件并重新打开它们的日志文件,而不是退出。nohup命令可以使命令忽略此信号。 |
SIGINT | 2 | 当用户希望中断进程时,SIGINT信号由进程的控制终端发送给进程。通常是通过Ctrl+C发出的,但在某些系统上,可以使用“delete”字符或“break”键。 |
SIGQUIT | 3 | 和SIGINT类似,用户请求进程退出并执行核心转储时,SIGQUIT信号通过其控制终端发送给进程,通常是通常是通过Ctrl+\发出的。 |
SIGILL | 4 | 当试图执行一个非法的、有缺陷的、未知的或特殊指令时,SIGILL信号被发送到进程。 |
SIGTRAP | 5 | 当发生异常或trap时,SIGTRAP信号被发送到进程。 |
SIGABRT、SIGIOT | 6 | SIGABRT和SIGIOT信号发送给进程以中止进程。当调用C标准库的abort()函数时,信号通常由进程本身发起,但是也可以像其他信号一样从外部发送到进程。 |
SIGBUS | 7 | 当进程导致总线错误时,SIGBUS信号被发送到进程。例如访问不存在的物理地址。 |
SIGFPE | 8 | 当进程执行错误的算术运算时,SIGFPE信号被发送到进程。例如除以0。 |
SIGKILL | 9 | 信号发送到进程使其立即终止。与SIGTERM和SIGINT不同,这个信号不能被捕获或忽略,并且接收进程接收到信号后不能执行任何清理。以下情况例外:僵尸进程不能被杀掉因为它们已经死掉了,等待它们的父进程处理它们。处于阻塞状态的进程在再次唤醒之前不会死亡。init进程比较特殊,它不会收到不想处理的信号,因此它可以忽略SIGKILL。未中止的睡眠进程即使接收到SIGKILL信号也可能不会终止。这是少数几种需要重新启动UNIX系统来解决临时软件问题的情况之一。在大多数系统关闭程序中,如果SIGTERM响应不自动退出,SIGKILL被做为终止进程的最后手段。 |
SIGUSR1 | 10 | 满足用户定义的条件,信号被发送到进程。 |
SIGSEGV | 11 | 当进程执行无效的虚拟内存引用或段错误时,SIGSEGV信号被发送到进程 |
SIGUSR2 | 12 | 满足用户定义的条件,信号被发送到进程。 |
SIGPIPE | 13 | 当进程试图写入没有连接到另一端的进程的管道时,SIGPIPE信号被发送到进程。 |
SIGALRM | 14 | 当超过在之前的警设置函数中指定时间限制时,SIGALRM信号被发送到进程。在超过真实或时钟时间时发送。 |
SIGTERM | 15 | SIGTERM信号被发送到进程以请求终止进程。与SIGKILL不同,它可以被进程捕获、解释执行或忽略。如果可能允许进程执行良好的终止:释放资源、保存状态。几乎与SIGINT相同。 |
SIGSTKFLT | 16 | 当协处理器发生堆栈故障时,SIGSTKFLT信号被发送到进程。 |
SIGCHLD、SIGCLD | 17 | 当子进程终止、中断或中断后恢复时,SIGCHLD信号被发送到进程。该信号的一个常见用法是,指示操作系统在子进程终止后清理子进程使用的资源,而不显式地调用wait系统调用。 |
SIGCONT | 18 | SIGCONT信号指示操作系统继续(重启)先前由SIGSTOP或SIGTSTP信号暂停的进程。这个信号的一个重要用途是Unix shell中的作业控制。 |
SIGSTOP | 19 | SIGSTOP信号指示操作系统停止进程以便稍后恢复。 |
SIGTSTP | 20 | SIGTSTP信号通过进程的控制终端发送到进程,请求进程停止。通常是通过Ctrl+Z发送的。与SIGSTOP不同的是,进程可以为信号注册一个信号处理程序,也可以忽略信号。 |
SIGTTIN | 21 | 当进程在后台尝试从终端读入时SIGTTIN信号将发送到进程。通常,这些信号只由作业控制下的进程接收,守护进程没有控制终端,因此不应该接收这些信号。 |
SIGTTOU | 22 | 当进程在后台尝试写到终端时SIGTTOU信号将发送到进程。通常,这些信号只由作业控制下的进程接收,守护进程没有控制终端,因此不应该接收这些信号。 |
SIGURG | 23 | 当套接字有紧急或带外数据可供读取时,SIGURG信号被发送到进程。 |
SIGXCPU | 24 | 当进程占用CPU的时间超过某个预先设定的用户设置值时,SIGXCPU信号被发送到进程。 |
SIGXFSZ | 25 | 当进程文件的增长超过允许的最大大小时,SIGXFSZ信号被发送到进程。 |
SIGVTALRM | 26 | 当超过在之前的警设置函数中指定时间限制时,SIGVTALRM信号被发送到进程。在进程使用CPU的时间超时时发送。 |
SIGPROF | 27 | 当超过在之前的警设置函数中指定时间限制时,SIGPROF信号被发送到进程。在进程和代表系统的进程使用CPU的时间超时时发送。 |
SIGWINCH | 28 | 当进程的控制终端改变其大小时,SIGWINCH信号被发送到进程。 |
SIGIO、SIGPOLL | 29 | IO准备完成,在一些unix系统上SIGIO默认被忽略。 |
SIGPWR、SIGINFO | 30 | 当系统发生电源故障时,SIGPWR信号被发送到进程。 |
SIGSYS、SIGUNUSED | 31 | 当系统调用时传入了不好的参数时,SIGSYS信号被发送到进程。实际上,这种信号很少遇到,因为应用程序依赖于库(例如libc)来调用它们。当应用违反配置的限制它们的Linux Seccomp安全规则时将会接收到SIGSYS信号。当使用未使用的系统调用号进行系统调用时,将SIGUNUSED信号发送给进程,在大多数架构上,与SIGSYS相同。 |
SIGRTMIN | 34 | 实时信号,这些信号用于用户自定义。 |
SIGRTMIN+1~SIGRTMIN+15 | 35~49 | |
SIGRTMAX-14~SIGRTMAX-1 | 50~63 | |
SIGRTMAX | 64 | |
SIGLOST | 29 | 当文件锁丢失时,SIGLOST信号被发送到进程。SIGLOST与SIGIO的值相同,SIGLOST在内核源代码中被注释掉了,但是在一些软件的构建过程中仍然认为信号29是SIGLOST。 |