새로운 cron 스크립트를 어떻게 테스트 할 수 있습니까?


14

몇 가지 다른 Linux 배포판 (Fedora 11, CentOS 5 및 SuSE 10.2)에서 실행 중이며 종종 명령 줄에서 직접 호출 할 때 cron 작업으로 실행하려는 새 스크립트가 제대로 작동하는 문제가 발생합니다. PATH 또는 기타 필요한 환경 변수의 약간의 변형으로 인해 cron에서 호출되면 실패합니다.

전체 crontab을 실행하거나 전체 cron.daily / .hourly 등의 디렉토리를 실행하기 위해 run-parts를 사용할 필요없이 cron에서 실행되는 것처럼 개별 스크립트를 테스트 실행하는 방법이 있습니까? 몇 분 안에 스크립트를 실행하기 위해 crontab을 임시로 편집 할 수있을 것 같지만 crontab을 엉망으로 만들 위험이 없도록보다 독립적 인 솔루션을 원할 것입니다.

답변:


9

에서 구글 검색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를 통해 스크립트를 실행하는 것입니다.


고마워, 나는 crontab이 crontab 내에서 환경 변수를 선언 할 수 있다는 스크립트와 같다는 것을 가지지 않았다.
gareth_bowles

7

개별 예약 된 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

그렇게하면 테스트 할 때마다 자주 실행할 수 있습니다.


감사합니다. 정답으로 투표 할 수 있다면 감사하겠습니다.
gareth_bowles

0

더 직접적인 해결책은 모르겠지만 스크립트에 대한 권한을 가진 사용자 (예 : crontest)를 만들고 'crontest'사용자의 사용자 별 crontab을 사용하여 편집하여 스크립트를 테스트 할 수 있습니다 다음 몇 분 안에 스크립트를 실행합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.