問題描述:
假設有一個定時任務,內容如下:
00 00 * * * screen -S test; echo "test screen"; screen -d test
解釋:每天晚上00:00, 用screen開啓一個名爲test會話,然後執行命令,之後將會話detached放在後臺執行。
但該命令無法正常執行,你會在系統郵件中收到該任務的執行失敗提示:
Must be connected to a terminal.
test screen
There is no screen to be detached matching test.
解決方法:
- 首先,在crontab命令之外,先用screen新建一個會話,比如還是上述的test
- crontab中的命令寫爲如下形式:
screen -S sessionname -X stuff 'command'`echo -ne '\015'`
該命令的含義:將特定command發送到特定的screen會話
其中,echo -ne '\015'
模擬的是按下回車鍵。
注意: command與最後的echo命令之間沒有空格。
比如,依舊是上述定時任務,就可寫成如下形式:
screen -S test -X stuff 'echo ""test screen""'`echo -ne '\015'`
親測可行。
Good Luck!