737 字
4 分钟
Linux 退出码、信号
2024-07-17

Exit Code#

  • 0:成功(Success),程序成功完成,无错误。

  • 1:通用错误(General error),一般性错误,通常表示命令执行失败。

  • 2:误用命令(Misuse of shell builtins),命令的用法错误,例如,缺少必要的参数。

  • 126:命令不可执行(Command invoked cannot execute), 尝试运行一个不可执行的命令,例如权限不足。

  • 127:命令未找到(Command not found),尝试运行一个不存在的命令或脚本。

  • 128:无效的退出参数(Invalid exit argument),使用了无效的退出状态码。

  • 130:进程被 Ctrl+C 终止(Script terminated by Control-C),进程接收到 SIGINT 信号(中断信号)。

  • 137:进程被 kill 命令终止(Script terminated by SIGKILL),进程接收到 SIGKILL 信号,通常是使用 kill -9 终止的。

  • 139:段错误(Segmentation fault),进程因段错误(非法内存访问)而终止。

  • 143:进程被 SIGTERM 终止(Script terminated by SIGTERM),进程接收到 SIGTERM 信号,通常是使用 kill 终止的。

  • 255:退出状态码超出范围(Exit status out of range),一般表示程序返回了超出范围的退出状态码。

Signal#

Unix 操作系统中的信号(signals)是一种软件中断,用于通知进程发生了某个特定事件。

  1. SIGHUP (1) - 挂起信号。通常用于告诉守护进程重新读取其配置文件。
  2. SIGINT (2) - 中断信号。当用户按下Ctrl+C时,发送此信号终止前台进程。
  3. SIGQUIT (3) - 退出信号。当用户按下Ctrl+\时发送,与SIGINT类似,但会产生核心转储(core dump)。
  4. SIGILL (4) - 非法指令信号。当进程尝试执行一段非法的机器语言指令时发送。
  5. SIGTRAP (5) - 跟踪/断点陷阱。主要用于调试。
  6. SIGABRT (6) - 中止信号。由abort函数发出,用于异常终止。
  7. SIGBUS (7) - 总线错误。非法地址访问,如对齐错误。
  8. SIGFPE (8) - 浮点异常。如除以零或溢出错误。
  9. SIGKILL (9) - 终止信号。强制终止进程,无法被捕获或忽略。
  10. SIGUSR1 (10), SIGUSR2 (12) - 用户自定义信号。留给用户使用,具体行为由应用定义。
  11. SIGSEGV (11) - 段错误。非法访问内存时发送。
  12. SIGPIPE (13) - 管道破裂。当进程写入无读端的管道时发送。
  13. SIGALRM (14) - 闹钟信号。由alarm系统调用产生,用于定时提醒。
  14. SIGTERM (15) - 终止信号。请求终止进程,可以被捕获,这是一种温和的终止方式。
  15. SIGCHLD (17) - 子进程状态改变信号。子进程结束时,父进程会收到此信号。
  16. SIGCONT (18) - 继续执行信号。使暂停的进程继续执行。
  17. SIGSTOP (19) - 停止执行信号。暂停进程的执行,无法被捕获或忽略。
  18. SIGTSTP (20) - 终端停止信号。当用户按下Ctrl+Z时发送,可以被捕获。
  19. SIGTTIN (21), SIGTTOU (22) - 终端输入/输出信号。后台进程尝试读写终端时发送。
Linux 退出码、信号
https://blog.lpkt.cn/posts/linux-exit-code/
作者
lollipopkit
发布于
2024-07-17
许可协议
CC BY-NC-SA 4.0