Я регулярно запускаю скрипт оболочки через Crontab, который использует 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 (Mail Transfer Agent) не указан. Демон cron фактически пытается отправить вам выходные данные. Вы можете установить MTA (например, postfix) или, если выходные данные не важны, перенаправить на " /dev/null 2>&1"