crontab이 실행되지 않았습니다

crontab이 실행되지 않았습니다

OpenCV를 사용하여 C 언어로 작성된 프로그램이 있습니다. 웹캠에서 이미지를 캡처하고 인수로 지정된 이름을 사용하여 디스크에 저장합니다. 매분마다 트리거하고 싶으므로 crontab에 다음 줄을 삽입합니다.

* * * * * /home/mustafa/Desktop/capture2/capture2 `date +\%y\%m\%d\%H\%M` >> /home/mustafa/Desktop/webcam.log

콘솔에서 명령을 실행하면 명령이 예상대로 실행됩니다. 그러나 crontab에서는 실행되지 않습니다.

내 crontab 구문에 문제가 있습니까?

편집: 이것은 Angström Linux입니다.

답변1

때로는 스크립트의 명령이 실행 중인 사용자의 PATH 환경 변수에 따라 달라집니다.

이 crontab의 시작 부분에 PATH 환경 변수를 추가해 보십시오. 올바른 쉘을 사용하는 것이 문제일 수도 있습니다. 특히 실제 데비안 시스템에서는 표준 쉘 /bin/sh가 /bin/bash가 아닌 /bin/dash에 연결됩니다. 스크립트에서 올바른 shebang을 사용하여 이 문제를 해결하거나 crontab 프로세스의 SHELL env var를 변경할 수 있습니다.

  SHELL=/bin/bash
  PATH=<Path Var of The Running user>

man 5 crontab추가 설명 도 참조하세요.

답변2

특히 이 crontab 항목에 대한 오류 로깅을 활성화하려면 오류를 파일로 리디렉션할 수 있습니다.

* * * * * /home/mustafa/Desktop/capture2/capture2 `date +\%y\%m\%d\%H\%M` 1>>/home/mustafa/Desktop/webcam.log 2>>/home/mustafa/Desktop/error.log

1>>/home/mustafa/Desktop/webcam.log스크립트 출력을 웹캠.log 파일에 추가합니다.

2>>/home/mustafa/Desktop/error.log스크립트의 오류를 error.log 파일에 추가합니다.

crontab에서 스크립트를 실행하기 전에 주의해야 할 몇 가지 사항이 있습니다.

  • 스크립트를 실행하는 crontab 항목이 있는 사용자는 스크립트 execute파일에 대한 권한을 포함하여 스크립트에서 사용되는 모든 파일에 액세스할 수 있어야 합니다. 사용자는 스크립트가 쓰거나 추가하는 파일에 대한 권한이 있어야 합니다 write.

  • 스크립트 파일의 모든 경로는 절대 경로여야 합니다. 파일 경로가 저장되는 스크립트의 시작 부분에 변수를 설정하는 것이 좋습니다.

위의 두 가지 사항을 확인한 후 crontab을 이용하여 스크립트를 실행하고 error.log파일에 오류가 있는지 확인해 보세요. 발생하는 오류에 따라 스크립트를 적절하게 변경할 수 있습니다.

답변3

제안대로갤런그리고맞잡다존재하다이 스레드, crontab 끝에 새 줄을 추가해 보세요. 분명히 일부 cron 구현은 crontab의 마지막 개행 이후에 아무것도 얻지 못합니다. 방금 RedHat 6 시스템에서 이 문제가 발생했는데 이제 모든 작업이 예상대로 실행됩니다.

관련 정보