SSH를 사용하여 서버에 연결하는 Crontab을 통해 정기적으로 쉘 스크립트를 실행하고 있습니다. 해당 스크립트를 수동으로 실행하면 성공적으로 실행됩니다. 동일한 세션 내에서 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"로 리디렉션할 수 있습니다.