Bash 스크립트를 루트로 실행하고 7,37 분, 매시간, 매월, 매월 실행되도록 루트 크론 작업을 설정하려고했습니다. 이 스크립트는에 위치하고 /usr/bin
이름이 지정 tunlrupdate.sh
됩니다. Tunlr의 DNS를 업데이트합니다.
$ ls -l /usr/bin/tunlrupdate.sh
-rwxr-xr-x 1 root root 2133 Sep 24 15:42 /usr/bin/tunlrupdate.sh
이 Bash 스크립트는 여기에서 사용할 수 있습니다 .
스크립트가 호출되면에있는 로그에 발생한 내용을 기록합니다. /var/log/tunlr.log
이 루트 크론 작업을 추가하기 위해 루트 크론 탭의 표준을 사용했습니다.
sudo crontab -e
그리고이 두 줄을 끝에 삽입했습니다. cron이 스크립트를 루트로 실행하기를 기대합니다.
# check for updated Tunlr DNS every 30 minutes at the hour + 7 mn and hour + 37 mn
07,37 * * * * root /usr/bin/tunlrupdate.sh
이후 명령으로 sudo crontab -l
크론 작업이 삽입되었음을 확인했습니다.
우분투를 재부팅하고 크론 작업이 제대로 시작되었는지 로그 파일을 확인하고있었습니다. 그러나 로그 파일 /var/log/tunlr.log
에는 작업이 성공적으로 시작되지 않았다는 의미가 없습니다.
명령 줄에서 스크립트를 실행하면 확인했습니다.
sudo /usr/bin/tunlrupdate.sh
로그 파일이 그에 따라 업데이트됩니다.
이 cron 작업이 시스템에서 계획대로 실행되지 않는 이유는 무엇입니까?
업데이트 1 : 지금까지 제안 된 모든 솔루션이 작동하지 않습니다. 시스템 로그를 나열하는 CLI에 대해 Olli에게 감사 sudo grep CRON /var/log/syslog
합니다. 그러나 CRON 오류가 발생했습니다
CRON[13092]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ]
&& find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php
/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
제안 된 PATH = 스크립트에서 함수에 대한 루트의 절대 경로 삽입 또는 사용 또는 여기에 제안 된 해결책이 없습니다. 여전히이 오류가 발생합니다.
일부 검색 후 여기/usr/lib/php5/maxlifetime
에 설명 된대로 파일의 오류를 정확하게 지적했습니다 .Change #!/bin/sh -e --> #!/bin/sh -x
그런 다음 시스템에 CRON 오류 로그를 나열하십시오.
sudo grep CRON /var/log/syslog
Feb 11 18:07:01 Marius-PC CRON[14067]: (root) CMD (root /usr/bin/tunlrupdate.sh)
Feb 11 18:07:01 Marius-PC CRON[14066]: (root) MAIL (mailed 1 byte of output; but got
status 0x00ff, #012)
여전히 bash 스크립트가 실행되지 않습니다. 이번에는 로그에 오류가 표시되지 않습니다. 이것이 스크립트의 내용이 아니라는 것을 확신하기 위해 스크립트를 다음 3 줄로 줄였습니다.
#!/bin/bash
LOGFILE=/var/log/tunlr.log
echo $LOGFILE >> $LOGFILE
여전히 cron 작업을 수행하지 않습니다. 로그 파일에 아무것도 기록되지 않습니다. 따라서 빈 스크립트가 cron에서 실행되지 않을 수 있습니까? 나는 그것을 얻지 못한다. 스크립트를 다음 두 줄로 줄인 것을 알고 있습니다.
#!/bin/bash
exit 0
그리고 여전히 동일한 오류 로그. 크론 스크립트는 통과하지 않습니다 ...