crontab定時任務下使用screen命令

問題描述:
假設有一個定時任務,內容如下:

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.

解決方法:

  1. 首先,在crontab命令之外,先用screen新建一個會話,比如還是上述的test
  2. 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!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章