Bash

kill: SIGSTOP: bash 腳本中的無效信號規範錯誤

  • September 13, 2021

當我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 SIGSTOPkill -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

引用自:https://unix.stackexchange.com/questions/199360