Bash

通過 atd 生成的腳本使程序處於等待狀態

  • July 27, 2020

我有一個bash通過 執行的腳本at,我執行它是 echo "bash /path/to/my/script.sh" | at -M now因為我希望它獨立執行。

生成腳本後,我立即看到 2 個實例 ( ps),即使在我的腳本成功完成後,另一個實例也不會終止。它將被重新設置為 pid1並繼續等待(strace顯示wait4(-1...)。

我無法弄清楚為什麼或如何分叉第二個實例!當我在沒有 的情況下執行腳本時at,我看不到第二個程序。調試這個的任何提示/提示?

謝謝。

簽出這個簡單的腳本:

#!/bin/bash

exec >/tmp/$$.log
exec 2>/tmp/$$-2.log

set -x

echo "1"
echo "2" >&2

這會將腳本 stdout 和 stderr 的整個輸出重定向到指定的日誌文件(在本例中為/tmp/<pid>.logand /tmp/<pid>-2.log),並且日誌文件的 stderr 部分將包含它執行的每個命令。您可以使用此輸出來跟踪腳本的執行,並查看它掛在哪裡…

17958-2.log 的內容:

+ echo 1
+ echo 2
2

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