Linux sh kill 无法执行 INVALID SIGNAL SPECIFICATION 执行失败

今天在解决问题的时候发现一个知识点:

在脚本中有一段用于结束进程的代码,通常我们都会使用 kill pid 或者 kill -9 pid,但是却提示 :

-SIGTERM INVALID SIGNAL SPECIFICATION(SIGTERM 是一个无效的信号指令)

通过慢慢分析得知:

bash

在这里插入代码片
#!/bin/bash

kill  -SIGTERM  PID

sh

#!/bin/sh

kill  -SIGTERM  PID 

# 提示:(SIGTERM INVALID  SIGNAL SPECIFICATION

我们可以看出 bash命令能够运行 -SIGTERM,而sh命令确无法执行;

后来翻阅资料看到有相同的问题记录:https://stackoverflow.com/questions/16423732/linux-shell-kill-signal-sigkill-kill

综上所述:

bash兼容性的要比sh要好,他修复了使用/bin/sh的问题,因为sh无法识别SIGTERM等内置命令或其他特性。

*当然如果你想在sh中使用如下命令

kill -TERM pid
kill -9 pid
kill pid

具体kill指令有那些, 可以自己在 KILL -L 查看信号说明

在这里插入图片描述

"invalid signal specification" 一词是指在程序中指定了无效的信号规范。 在计算机科学中,信号是用于通知进程发生事件的一种机制。例如,当我们在终端上按下Ctrl+C键,操作系统会发送一个中断信号(SIGINT)给当前运行的进程,用于终止该进程。除了中断信号外,还有许多其他类型的信号可用于不同的情况。 当程序中指定了无效的信号规范时,操作系统无法理解该信号规范并执行相应的操作。可能由于以下几个原因导致信号规范无效: 1. 错误的信号名称:信号名称需要按照操作系统的规范进行指定。如果指定了不存在的信号名称,操作系统会报错"invalid signal specification"。 2. 不支持的操作系统:某些信号可能只在特定的操作系统上可用。如果在不支持该信号的操作系统上指定了该信号规范,会导致错误。 3. 错误的信号处理程序:在程序中,可以为不同的信号指定相应的处理函数。如果指定了无效的处理函数或处理函数的指针,操作系统会报错。 为了解决"invalid signal specification"的问题,需要检查程序中指定的信号规范是否正确,并确保所使用的信号名称、操作系统和处理函数都是有效的。如果需要,可以参考操作系统的文档或资源来获取正确的信号规范。 总之,当我们在程序中遇到"invalid signal specification"时,需要检查信号规范的有效性,并进行相应的修正,以确保程序运行正常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值