我經常透過 Crontab 運行 shell 腳本,該腳本使用 SSH 連接到伺服器。如果我手動運行該腳本,它將成功運行。在同一個會話中,Crontab 也會成功地執行它。但如果我重新啟動電腦並等待 Crontab 啟動腳本,則會失敗。
我的機器和我連接的伺服器都有彼此沒有密碼的密鑰。
我的腳本中的 SSH 命令:
ssh -i /home/myuser/.ssh/id_rsa -t -t myuser@servername 'some-script-on-the-server'
crontab 指令:
45 10 * * * root sudo -u myuser my-local-script
我以為我可以透過提供 SSH 命令來解決這個問題,-i /home/myuser/.ssh/id_rsa
但這樣做之後仍然不起作用。
的輸出/var/log/syslog
是:
May 23 11:06:01 mycomputer CRON[1254]: (root) CMD (sudo -u myuser my-local-script)
May 23 11:06:01 mycomputer CRON[1252]: (CRON) info (No MTA installed, discarding output)
有什麼問題?
答案1
「未安裝 MTA」表示在您的腳本中,您可能想要傳送電子郵件,但尚未指定 MTA(郵件傳輸代理程式)。事實上,cron 守護程式會嘗試將輸出傳送給您。您可以安裝 MTA(如 postfix),或者,如果輸出不重要,則重定向到“/dev/null 2>&1”