Cron 작업이 예상대로 작동하지 않습니다.

Cron 작업이 예상대로 작동하지 않습니다.

간단한 Ruby 스크립트를 1분, 5분, 1시간마다 주기적으로 실행하기 위해 3개의 crontab 작업을 설정했습니다. 그들은 처형을 하지만 아무것도 하지 않습니다. 내 컴퓨터에는 단 한 명의 사용자( root)만 있고 명령을 실행하여 crontab을 설정했습니다 crontab -e. crontab -l현재 crontab 작업을 나열합니다.

5 * * * * ruby /root/www/server-monitoring/current/tasks/cpu_check.rb
0 * * * * ruby /root/www/server-monitoring/current/tasks/free_disk_space.rb
1 * * * * ruby /root/www/server-monitoring/current/tasks/free_ram_check.rb

실행되는 것을 볼 수 있지만 올바른 간격으로 실행되지는 않으며 아무것도 하지 않습니다. 반면에 이러한 Ruby 파일을 수동으로 실행하면 제대로 작동합니다. Ruby 프로그램이 100% 작동하는지, 테스트를 통과하는지 등을 확인할 수 있습니다. 다음은 crontab 로그입니다.

Dec  6 15:45:01 monitoring-jedrzej CRON[28281]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec  6 15:55:01 monitoring-jedrzej CRON[28478]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec  6 16:00:01 monitoring-jedrzej CRON[28584]: (root) CMD (ruby /root/www/server-monitoring/current/tasks/free_disk_space.rb)
Dec  6 16:01:01 monitoring-jedrzej CRON[28614]: (root) CMD (ruby /root/www/server-monitoring/current/tasks/free_ram_check.rb)
Dec  6 16:05:01 monitoring-jedrzej CRON[28702]: (root) CMD (ruby /root/www/server-monitoring/current/tasks/cpu_check.rb)
Dec  6 16:05:01 monitoring-jedrzej CRON[28703]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Dec  6 16:15:01 monitoring-jedrzej CRON[29214]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)

내가 여기서 무엇을 놓치고 있는 걸까요?

답변1

일반적으로 말하면 이것이 환경 문제라는 것을 알게 될 것입니다. cron에서 스크립트를 실행하면 /etc/profile스크립트가 실행되지 않습니다. /etc/profile스크립트 시작 부분에서 소스 코드를 얻거나 스크립트에 필요한 변수를 설정할 수 있습니다( PATH이것이 제가 빨리 생각한 것입니다).

envcron에서 무언가를 실행할 때 환경이 어떤지 정확히 확인할 수 있도록 명령을 실행하는 작은 스크립트를 생성하고 파일에 연결하는 것이 좋습니다 . 설정해야 하지만 그렇지 않은 항목을 찾는 데 도움이 됩니다.

답변2

이러한 작업이 1분, 5분, 1시간마다 실행되도록 설정하지 않았습니다. 세 가지 설정은 모두 근무 시간 이후: 01, 근무 시간 이후: 05, 근무 시간 이후: 00에서 매시간 실행되도록 설정되어 있습니다. 대신 다음과 같은 것을 시도해 볼 수 있습니다.

* * * * *    echo 'run every minute'
*/5 * * * *  echo 'run every 5 minutes'
0,5,10,15,20,25,30,35,40,45,50,55 * * * *   echo 'alternate every-five-minute'
0 * * * *    echo 'run every hour on the hour'

관련 정보