이 cron tqsk는 작동하지 않습니다.
[main_usr@localhost ~]$ sudo crontab -l -u root
0 * * * * /home/main_usr/cron_test1.sh > /home/main_usr/cron_test1_out.sh.out 2>&1
[main_usr@localhost ~]$
그리고
$ ls -al cron_test1.sh
-rwxr-xr-x 1 main_usr main_usr 293 Apr 8 05:12 cron_test1.sh
보시다시피 cron 작업에 새로운 줄이 있습니다. 파일이 존재하고 실행 가능합니다. 이 작업은 하루 전에 생성되었습니다. 매 시간마다 실행되어야 합니다. 그럼에도 불구하고 "cron_test1_out.sh.out"은 아직 생성되지 않았습니다.
왜?
답변1
Cron 작업은 /bin/sh 및 빈 환경을 사용하여 실행되므로 때로는 bash 구성 파일이나 다른 환경 파일을 가져와야 하거나 cron 파일에 환경 변수를 포함하도록 선택할 수도 있습니다. 일반적으로 PATH가 가장 큰 범죄자입니다. 기본적으로 경로는 /usr/bin:/bin으로 설정되므로 스크립트가 이 두 디렉터리에 없고 전체 경로가 없는 실행 파일을 참조하는 경우 cron이 실패합니다. 다음과 같이 간단한 KEY=VALUE를 사용하여 crontab에서 환경 변수를 설정할 수 있습니다.
PATH=/usr/bin:/bin:/usr/local/bin
답변2
얼마 전에 같은 문제가 발생했습니다.
/bin/bash를 추가하면 문제가 해결되었습니다.
예:
0 * * * * /bin/bash /path_to_your_script/script.sh > /output_directory
이유: 쉘 스크립트를 실행할 때 스크립트가 실행되어야 하는 위치를 정의해야 하므로 /bin/sh, /bin/zsh 또는 기타 위치를 사용하여 스크립트를 실행해야 할 수도 있습니다.
Cron 자체는 스크립트를 실행할 위치를 모릅니다.
또한 /var/log/syslog 및 /var/mail/root를 확인하여 원인을 확인하세요.