我经常通过 Crontab 运行使用 SSH 连接到服务器的 shell 脚本。如果我手动运行该脚本,它会成功运行。在同一个会话中,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”