Linux

如何在工作中使用符號信號?

  • May 7, 2009

這個關於 SO 的答案中,我給出了一個應該在送出到at的作業中使用 -SIGCONT 信號的範例。但是,我發現我用 -SIGSTOP 停止的程序沒有繼續。當我將信號更改為數值時,它起作用了。

echo "kill -18 $rspid"|at now + 2 minutes

使用數值是個壞主意,因為它在不同的系統上可能會有所不同。

如何使用符號信號 (-SIGCONT) 而不是數字信號 (-18) 送出此作業?

事實證明,dash 喜歡 -CONT 形式的信號並且不理解 -SIGCONT 樣式。由於 bash 兩者都理解,因此使用前者可能更便攜。

在我的測試中,我是否包含了“kill”的顯式路徑並沒有任何區別,但指定信號的方式確實如此。

我的猜測是,您在工作中使用的任何外殼都與您在命令行中使用的外殼不同,並且在工作外殼中沒有內置的知道符號信號符號的 kill 。這在 Ubuntu 上很常見,它使用 dash 表示 /bin/sh(預設情況下由 at 使用),但 /bin/bash 用於互動式 shell。

您可以通過指定路徑來使用“kill”二進製文件:

echo "/bin/kill -CONT $rspid" | at now + 2 minutes

或者指定要顯式執行的 shell:

echo "/bin/bash -c \"kill -CONT $rspid\"" |at now + 2 minutes

我認為有一個選項可以告訴您使用什麼外殼,但我現在似乎找不到任何提及它的內容。也許shebang會起作用…

引用自:https://serverfault.com/questions/5160