crontab은 일부 명령만 실행합니까?

crontab은 일부 명령만 실행합니까?

나는 Raspbian 기반 FullPageOS 배포판을 설치한 키오스크로 사용하는 Raspberry Pi 2를 가지고 있습니다.

crontab에서 실행하려고 할 때 일부 명령이 자동으로 실패한다는 점을 제외하면 모든 것이 잘 작동합니다.

pi 사용자가 특정 시간에 키오스크를 열고 닫는 두 가지 명령이 있습니다.

$crontab -l -u pi
# m h  dom mon dow   command
05 9 mon-fri * * /bin/bash /home/pi/scripts/dispon.sh >> /tmp/cronjob.log 2>&1
15 18 mon-fri * * /usr/bin/xset -display :0 dpms force off >> /tmp/cronjob.log 2>&1
*/3 * * * * /usr/bin/touch /tmp/1111 >> /tmp/cronjob.log 2>&1

보시다시피 저는 모니터 닫기 시퀀스에서 직접 xset을 실행하고 모니터를 열 때 스크립트의 일부로 xset을 실행하는 등 다양한 접근 방식을 시도했습니다.

dispon.sh 스크립트의 내용(chmod a+x):

#!/bin/bash
xset -display :0 dpms force on
xset -display :0 -dpms

두 명령 모두 작동하지 않는 것 같고(쇼를 열거나 닫을 수 없음) /tmp/cronjob.log에 오류 메시지도 남기지 않습니다.

그러나 touch 명령은 작동하고 파일을 터치합니다.

xsetSSH 연결을 통해 pi 사용자로 실행할 때 둘 다 잘 작동합니다.dispon.sh

어떤 아이디어가 있나요? ?

답변1

crontabfileformat()에 대한 매뉴얼 페이지는 man 5 crontab다음과 같이 씁니다.

월 및 요일 필드에도 이름을 사용할 수 있습니다. 특정 날짜 또는 월의 처음 세 글자를 사용하세요(대소문자 구분 안 함). 이름 범위 또는 목록은 허용되지 않습니다.

마지막 문장에 주목하세요. 사용할 수 없습니다 mon-fri(하지만 사용할 수는 있습니다 1-5).

또한 올바른 필드 순서(분, 시간, 월, 월, 요일, 명령)를 알려주는 주석(첫 번째 줄)을 놓쳤지만 요일 값을 너무 일찍 배치했습니다. 이 수정된 crontab파일은 귀하에게 더 적합할 것입니다:

SHELL=/bin/bash
PATH=/usr/bin:/bin:/usr/local/bin:/home/pi/scripts

# m h  dom mon dow   command
05 9 * * 1-5     dispon.sh >> /tmp/cronjob.log 2>&1
15 18 * * 1-5    xset -display :0 dpms force off >> /tmp/cronjob.log 2>&1
*/3 * * * *      touch /tmp/1111 >> /tmp/cronjob.log 2>&1

마지막으로, 귀하의 항목을 명백히 무시하고 있는 것으로 확인되면 cron최근 로그 보고서를 검색하여 무슨 일이 일어났는지 확인할 수 있습니다(있는 경우).

grep CRON /var/log/syslog

답변2

dom 필드의 3열에는 명령이 실행되어야 하는 월별 일수를 지정해야 합니다. 예를 들어 1-3은 해당 월의 1~3일에만 실행된다는 의미입니다. 월요일부터 금요일까지의 평일을 마지막 열로 이동해야 합니다.

관련 정보