我正在嘗試執行一個腳本,分離,延遲和在後臺。nohup打電話與睡眠評估不正確
我有以下腳本:
#!/bin/sh
echo "[$(date)][${HOST}] Immediate date" > ~/out.log
nohup bash -c "sleep 2 && echo '[$(date)][${HOST}] Delayed date'" >> ~/out.log 2>&1 &
我希望out.log將包含像這樣正好兩行:
[Tue Apr 4 08:55:56 CEST 2017][] Immediate date
[Tue Apr 4 08:55:58 CEST 2017][] Delayed date
注意時間戳是間隔2秒。而是BOT日期閱讀完全相同的時間...
[Tue Apr 4 08:55:56 CEST 2017][] Immediate date
[Tue Apr 4 08:55:56 CEST 2017][] Delayed date
當我嘗試沒有nohup
和bash -c
是否如預期的輸出,但調用腳本將不得不繼續運行,否則,第二個命令會中止。
是什麼原因導致日期沒有改變並解決它?
編輯:
我已經簡化了計算器的命令。但現在當我再次展開時,我遇到了另一個可變擴展問題。當我添加了HOST
變量:
HOST=foo.bar
nohup bash -c 'sleep 2 && echo "[$(date)][${HOST}]" Delayed date' >> ~/out.log 2>&1 &
輸出文件DOS不包含foo.bar
:
[Tue Apr 4 12:52:11 CEST 2017][]
它是錯的,如果包括'睡眠2'只是第一個'echo'和'nohup'命令之間?這不會解決你的目的嗎? – Inian
這是行不通的,它會導致調用程序等待2秒,而是我希望調用程序繼續執行,只有命令稍後執行(大約1分鐘左右) –