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
파일에 오류가 있는지 확인해 보세요. 발생하는 오류에 따라 스크립트를 적절하게 변경할 수 있습니다.