Ubuntu 12.04 시스템에서 매분 실행되는 크론 작업이 있습니다.
$sudo crontab -e
* * * * * mylogin /pathto/file.sh > /log/filelog
을 실행하면 file.sh
bash 스크립트가 작업을 수행하고 다음을 에코합니다 runs
.
$ ./file.sh
runs
cron 탭의 로그를 확인하면 작업이 실행 중임을 표시합니다.
Jul 10 12:41:01 localhost CRON[1811]: (root) CMD (mylogin /pathto/file.sh > /log/filelog)
Jul 10 12:41:01 localhost CRON[1810]: (CRON) info (No MTA installed, discarding output)
Jul 10 12:42:01 localhost CRON[1813]: (root) CMD (mylogin /pathto/file.sh > /log/filelog)
그러나 스크립트가 실행되고 있지 않습니다. 제 역할을 하지 못했고 runs
반향도 없었습니다 /log/filelog
.
$cat /log/filelog #shows nothing
이 문제를 디버깅하려면 어떤 다른 단계를 수행해야 합니까?
답변1
mylogin
파일의 사용자 이름을 지정합니다 /etc/crontab
. 명령을 사용하면 sudo crontab -e
실제로 를 편집하고 있으므로 /var/spool/cron/crontabs/root
이와 같은 파일에 사용자 이름을 지정하면 안 되며 /etc/crontab
.
사용자로 명령을 실행해야 하는 경우 mylogin
해당 줄을 입력하거나 /etc/crontab
(그리고 root
권한으로 편집) mylogin
사용자의 crontab에 넣어야 합니다.
에서 man 5 crontab
:
EXAMPLE SYSTEM CRON FILE
The following lists the content of a regular system-wide crontab file.
Unlinke a user's crontab, this file has the username field, as used by
/etc/crontab.