Bash
kill: SIGSTOP: bash 腳本中的無效信號規範錯誤
當我
kill
在命令行上使用它時它可以工作。kill -SIGSTOP 1234
但是,如果我在 bash 腳本文件中使用,我會收到此錯誤:
kill: SIGSTOP: invalid signal specification
sh 文件是
#!/bin/sh kill -SIGSTOP 1234
如何
kill
在 bash 腳本中使用?我試過這個:#!/bin/sh /bin/bash -c "kill -SIGSTOP 1234"
但它不起作用。
標準(POSIX)語法是:
kill -s STOP "$pid"
也就是說,沒有
SIG
前綴。一些 shell 實現,支持kill -s SIGSTOP
或kill -SIGSTOP
作為擴展,但這不是標準的,也不是可移植的。UNIX 規範 (POSIX+XSI) 還允許:
kill -STOP "$pid"
和
kill -19 "$pid"
儘管未指定哪個信號編號,
SIGSTOP
並且可能在系統之間甚至同一系統的架構之間發生變化,但應避免使用。
我面臨同樣的問題。這裡的所有答案都沒有解決問題的真正原因。在腳本中使用的是shell 提供
kill
的內置腳本,這就是您遇到錯誤的原因。在您的終端中,使用的是位於. 要解決此問題,您必須在腳本中明確使用而不是內置 shell 版本。因此你這樣寫:kill``/bin/kill``/bin/kill
#!/bin/sh /bin/kill -s SIGHUP 14344