몇 가지 다른 Linux 배포판 (Fedora 11, CentOS 5 및 SuSE 10.2)에서 실행 중이며 종종 명령 줄에서 직접 호출 할 때 cron 작업으로 실행하려는 새 스크립트가 제대로 작동하는 문제가 발생합니다. PATH 또는 기타 필요한 환경 변수의 약간의 변형으로 인해 cron에서 호출되면 실패합니다.
전체 crontab을 실행하거나 전체 cron.daily / .hourly 등의 디렉토리를 실행하기 위해 run-parts를 사용할 필요없이 cron에서 실행되는 것처럼 개별 스크립트를 테스트 실행하는 방법이 있습니까? 몇 분 안에 스크립트를 실행하기 위해 crontab을 임시로 편집 할 수있을 것 같지만 crontab을 엉망으로 만들 위험이 없도록보다 독립적 인 솔루션을 원할 것입니다.
답변
에서 구글 검색 에path in crontab
root@pingu # cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
기본적으로 PATH를 설정하고 변형에 대해 걱정할 필요가 없습니다. 또한 빠른 테스트는 동일한 환경 변수를 사용하여 모든 상자에서 SSH를 통해 스크립트를 실행하는 것입니다.
답변
개별 예약 된 cron 작업 (crontab의 별도 줄)을 실행중인 경우 테스트 할 때마다 또는 1 분마다 예약합니다. 테스트가 끝나면 crontab 라인을 편집하여 원하는 빈도로 실행합니다.
부수적으로, cron 자체가 제대로 작동하는지 테스트하고 올바른 주소로 결과를 이메일로 보내려면 (매우 중요) / etc / crontab에 다음 줄을 추가합니다.
* * * * * root ls /doesnotexistfoobar
1 분마다 실행되며 ls
존재하지 않는 디렉토리에서 시도 합니다. 1 분마다 실패 메시지를 이메일로 보내야합니다. 나는 그것이 작동 할 때 라인을 주석 처리합니다.
귀하의 질문으로 돌아 가기 : 아마도 기존 cron 작업을 자주 변경하여 다시 변경하는 것을 잊어 버릴 가능성이 있고 cron.hourly, cron.daily 또는 cron을 실행하기를 원할 수도 있습니다. 거기에 무엇이 있는지에 따라 부작용이 생길 수 있습니다. cron에서 호출 될 때와 동일한 환경에서 스크립트를 실행하려면 위의 “ls”트릭을 수정하는 것이 좋습니다.
스크립트를 직접 실행하려면 crontab에 줄을 추가하십시오.
* * * * * root /etc/cron.hourly/customscript
그렇게하면 테스트 할 때마다 자주 실행할 수 있습니다.
답변
더 직접적인 해결책은 모르겠지만 스크립트에 대한 권한을 가진 사용자 (예 : crontest)를 만들고 ‘crontest’사용자의 사용자 별 crontab을 사용하여 편집하여 스크립트를 테스트 할 수 있습니다 다음 몇 분 안에 스크립트를 실행합니다.