进程信号的理解(kill -1,-2,-3,-9,-15-18,-19,-20)

这篇博客探讨了操作系统中如何管理进程,包括重新加载配置、清空内存数据、强制结束与正常关闭进程。重点讲解了kill命令的不同参数,如kill-2对应Ctrl+C,kill-9用于强制结束无法正常关闭的进程,以及如何恢复被暂停的进程。内容涉及进程的生命周期和对系统稳定性的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.重新加载系统配置文件

2.清空内存中的数据

kill -2 清空指定进程在内存中的数据

可以看出,kil -2的作用等同于ctrl c

3.清除内存中鼠标数据

ctrl \ ##按了以后就看不到鼠标光标了,动一下又会出现

9.强制结束进程(不能被拒绝)

 使用kill -15正常关闭进程gedit 

 如下,关闭一个后台运行着vim的shell 无法用kill -15关闭,因为kill -15是正常关闭,当系统认为关闭shell 对系统有不良影响时,就无法关闭。

 使用-9就可以强制关闭,因为强制性很高。

 18.  重新运行被暂停的进程

19.暂停(不会被阻塞,拒绝)

 20.暂停(但会被阻塞)

<think>好的,我现在要回答用户的问题:“kill只有1 2 9 15 3这几个参数吗”。用户之前已经询问过关于kill命令的一些参数和信号的问题,现在他想知道是否kill只有这几个参数。 首先,我需要确认用户的问题核心。用户可能在使用kill命令时遇到了参数选择的问题,或者在学习过程中只接触到了这几个信号,所以想知道是否还有更多。用户可能对信号的概念不太清楚,或者对kill命令的完整参数列表不熟悉。 接下来,我需要回忆kill命令支持的信号种类。根据之前的知识,Linux系统中有多种信号,常用的包括SIGHUP(1), SIGINT(2), SIGQUIT(3), SIGKILL(9), SIGTERM(15),但还有更多,比如SIGSTOP(17), SIGCONT(18), SIGTSTP(20)等。用户提到的129153这几个信号只是最常用的几个,但并不是全部。 然后,我需要思考如何组织回答。首先明确回答用户的问题:kill命令支持的参数不止这几个,还有很多其他信号。然后列出常见的信号编号和名称,解释每个信号的用途,帮助用户理解不同信号的作用。此外,应该说明如何查看所有可用的信号,比如使用`kill -l`命令。 另外,用户可能想知道为什么之前的讨论只提到了这几个信号,可能需要解释这些信号是最常用的,用于进程的基本控制,而其他信号用于特定场景,如作业控制、调试等。需要强调SIGKILL和SIGTERM的区别,以及为什么在之前的问题中重点提到了它们。 还需要检查是否有错误的信息,比如信号编号是否正确。例如,SIGSTOP是信号19还是17?需要确认。在Linux中,SIGSTOP是19,SIGCONT是18,而SIGTSTP是20。可能需要查阅资料确认编号是否正确,避免误导用户。 另外,用户可能对如何正确使用这些信号感兴趣,可以简要说明在不同情况下应选择哪个信号,例如优先使用SIGTERM,再考虑SIGKILL,或者如何用SIGSTOP暂停进程等。 最后,确保回答结构清晰,分点列出,便于用户理解。可能还需要提醒用户,不同的系统或Shell版本可能支持的信号略有不同,建议用户使用`kill -l`查看当前系统支持的所有信号。</think>$\boxed{\textsf{核心结论}}$ **`kill` 命令支持的参数远不止 123915 这几个!** 这些编号对应的是最常用的信号,但 Linux 系统实际支持 **64 种标准信号**(可通过 `kill -l` 查看完整列表)。以下是详细说明: --- ### $\boxed{1. \textsf{信号参数的本质}}$ - **信号进程间通信的预定义指令**,用于控制进程行为 - **编号范围**:1~64(部分编号无定义,实际有效信号30 个) - **两种调用方式**: ```bash kill -<信号名> # 如 kill -SIGTERM kill -<信号编号> # 如 kill -15 ``` --- ### $\boxed{2. \textsf{常见信号列表(按功能分类)}}$ #### **基础控制信号** | 编号 | 信号名 | 用途 | |------|-----------|----------------------------------------------------------------------| | 1 | SIGHUP | 终端挂断(常用于重启守护进程,如 Nginx `nginx -s reload`) | | 2 | SIGINT | 键盘中断(等同 Ctrl+C) | | 3 | SIGQUIT | 键盘退出(等同 Ctrl+\,生成核心转储后终止进程) | | 15 | **SIGTERM** | **默认终止信号**(允许进程清理资源后退出) | | 9 | **SIGKILL** | **强制终止信号**(不可捕获/忽略,直接杀死进程) | #### **作业控制信号** | 编号 | 信号名 | 用途 | |------|-----------|----------------------------------------------------------------------| | 19 | SIGSTOP | 暂停进程(不可捕获/忽略,常用于调试) | | 18 | SIGCONT | 恢复被暂停的进程(如 `fg` 命令的底层实现) | | 20 | SIGTSTP | 终端暂停(等同 Ctrl+Z,进程可自定义处理逻辑) | #### **调试/异常信号** | 编号 | 信号名 | 用途 | |------|------------|----------------------------------------------------------------------| | 5 | SIGTRAP | 断点陷阱(调试器使用) | | 6 | SIGABRT | 程序主动中止(如 `abort()` 函数触发) | | 4 | SIGILL | 非法指令(执行了 CPU 不支持的指令) | | 8 | SIGFPE | 浮点异常(除以零等算术错误) | | 11 | SIGSEGV | 段错误(非法内存访问) | --- ### $\boxed{3. \textsf{如何查看所有信号?}}$ 在终端执行以下命令查看完整信号列表: ```bash kill -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 ...(共 64 项) ``` --- ### $\boxed{4. \textsf{为什么常用信号集中在少数几个?}}$ 1. **功能覆盖**:SIGTERM(15)/SIGKILL(9) 已满足 90% 的进程终止需求 2. **安全性**:大多数信号(如 SIGSEGV)由系统自动触发,无需手动发送 3. **专业化场景**:如 SIGPIPE(13) 用于管道断裂处理,通常由程序自行管理 --- ### $\boxed{5. \textsf{特殊信号示例}}$ - **SIGUSR1(10)/SIGUSR2(12)**:用户自定义信号(常用于程序内部逻辑触发,如日志轮转) ```bash kill -SIGUSR1 <PID> # 通知进程执行自定义操作 ``` - **SIGALRM(14)**:定时器到期信号(如 `sleep` 命令的底层实现) - **SIGCHLD(17)**:子进程状态变更通知(用于父进程回收子进程资源) --- $\boxed{\textsf{总结}}$ - **`kill` 支持 60+ 信号**,1/2/3/9/15 只是最常用的子集 - **优先使用语义明确的信号名**(如 `kill -SIGTERM` 而非 `kill -15`) - **慎用非常用信号**:部分信号会引发不可逆操作(如 SIGKILL)或程序异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值