今天在解决问题的时候发现一个知识点:
在脚本中有一段用于结束进程的代码,通常我们都会使用 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 查看信号说明

本文探讨了在bash和sh两种Shell环境下使用kill命令结束进程的不同表现,揭示了bash相较于sh在信号处理上的兼容性和修复问题。通过具体示例,文章详细解释了为何在sh中使用SIGTERM会遇到无效信号错误,并提供了正确的替代写法。
1238

被折叠的 条评论
为什么被折叠?



