我刚刚写了一个shell脚本来控制一个模块的启动和停止。一切似乎都很正常,直到我发现停止命令导致意外。
我使用命令kill -s SIGKILL -- -gpid
杀死一组进程。我使用/bin/sh
来运行这样的命令
/bin/sh -c "kill -s SIGKILL -- -gpid"
它回答了错误
/bin/sh:第 0 行:kill:SIGKILL:无效的信号规范
然后我用 替换了/bin/sh
,/bin/bash
所以命令是
/bin/bash -c "kill -s SIGKILL -- -gpid"
它没有回答任何错误。所以我总结出 bash 和 sh 之间的差异导致结果的解释。但是,当我ls
使用时/bin/sh
,我发现/bin/sh
是指向 的符号链接/bin/bash
,因此命令应该是相同的。
我发现命令语法kill -s SIGKILL
不是推荐的语法,kill -s KILL
推荐。
所以我用 KILL 替换了 SIGKILL,命令是
/bin/sh -c "kill -s KILL -- -gpid"
它没有回答任何错误。如上所述,任何人都可以解释这种情况。