테스트 / 디버깅을 위해 어떻게 cron을 작업으로 실행할 수 있습니까? 일정을 바꾸지 않고!


133

일정을 변경하는 것 외에 매일 실행되도록 예약 된 cron 작업이 있는데, 명령이 제대로 작동하는지 확인하기 위해 현재 명령의 테스트 실행을 수행 할 수있는 다른 방법이 있습니까?


귀하의 질문을 이해하지 못합니까? 왜 단순히 명령을 실행하지 않습니까?
— favadi

20
셸 (내 셸)에 입력하면 명령이 작동한다는 것을 알고 있지만 cron실행할 때 작동하는지 알고 싶습니다. ENV 또는 셸 관련 항목 ( ~확장) 또는 소유권 및 권한에 영향을 받거나 ...
— 알리

2
그렇다면 동일한 명령으로 매분마다 새로운 cron 작업을 생성하지 않겠습니까?
— favadi

13
이것은 내가 끝내는 일이지만, cron에게 작업 번호 7에서 테스트 실행을 원한다고 말할 수있는 방법이 있는지 궁금합니다! 분명히 다른 사람들은 전에이 문제 / 요청 / 소원을 가졌습니다!
— Ali

4
구글을 통해 여기에 매우 늦었지만 favadi의 답변에 관한 모든 것이 잘못되었습니다. 그는 cron에서 그것을 테스트하기 위해 crontab을 편집하지 않고 그것을 테스트하고 싶었습니다. 그들이 유스 케이스를 이해하려고 시도하지 않았을 때 당신이 원하는 것을 잘못 알려주는 사람보다 훨씬 나쁩니다.
— HörmannHH

답변:


32

내가 아는 한 cron에는 특별한 목적이 있기 때문에 직접 수행 할 수있는 방법이 없습니다. 실행은 특정 시간에 명령을 예약합니다. 따라서 가장 좋은 방법은 crontab 항목을 수동으로 만들거나 환경을 제거하고 재설정하는 스크립트를 작성하는 것입니다.


57

다음 명령으로 crontab을 강제로 실행할 수 있습니다.

run-parts /etc/cron.daily

9
... OP의 크론 작업 (3 년 전 요청)이 개별 크론 탭과 달리 cron.daily에 있다고 가정합니다.
— Jeff Schaller

18
이것은 cron 사용자 환경을 완전히 시뮬레이션하지는 않으므로 스크립트를 실제 cron 작업으로 실행 한 후에는 PATH 및 기타 envvar가 사용자와 다른 경우가 있기 때문에 여전히 버그가있을 가능성이 높습니다 run-parts /etc/cron.daily. 내 스크립트가 제대로 실행 run-parts되지만 실제로 cron 사용자가 실행할 때 실패 하므로이 버그를 해결 하고 있습니다.
— ArtHare

42

"크론 작업을 수동으로 즉시 실행"에 설명 된대로 크론 사용자 환경을 시뮬레이션 할 수 있습니다 . 이를 통해 cron 사용자로 실행될 때 작업이 작동하는지 테스트 할 수 있습니다.


링크에서 발췌 :


1 단계 :이 줄을 사용자의 crontab에 임시로 넣었습니다.

* * * * *   /usr/bin/env > /home/username/tmp/cron-env

그런 다음 파일이 작성되면 꺼 냈습니다.

2 단계 : 나 자신을 크론 bash 스크립트로 만들었습니다.

#!/bin/bash
/usr/bin/env -i $(cat /home/username/tmp/cron-env) "$@"

그래서 문제의 사용자로서

run-as-cron /the/problematic/script --with arguments --and parameters

유용한 트릭. 물론 명령에 백분율 기호가 있으면 도움이되지 않습니다.
— basic6
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.