나는 매일 실행하고 싶은 레일스 스크립트를 가지고있다. 나는 많은 접근 방식이 있다는 것을 알고 있으며, 어떤 사람들은 cron'd script/runner
접근 방식을 싫어하는 경향이 있지만 그것이 나의 필요를 충족시키는 것으로 보인다.cron이 특정 스크립트를 실행하지 않는 문제를 디버깅하는 방법 - 또는 다른 방법?
그러나 내 스크립트는 예정대로 실행되지 않습니다.
내 신청서는 /data/myapp/current
이고, 스크립트는 script/myscript.rb
입니다. 내가 가진 root
로 문제없이 수동으로 실행할 수 있습니다 : 나는 그렇게 할 때
/data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb
, 특별 로그 파일 (log/myscript.log
)이 예상대로에 기록됩니다 :
Tue Mar 03 13:16:00 -0500 2009 Starting to execute script...
...
Tue Mar 03 13:19:08 -0500 2009 Finished executing script in 188.075028 seconds
나는 그것을 실행하도록 설정해야 매일 오전 4시에 cron
입니다. root
의 crontab을 : 오늘 아침처럼 최근에 실행하려고처럼 사실
$ crontab -l
0 4 * * * /data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb
, 그것은 보인다!
$ tail -100 /var/log/cron
...
Mar 2 04:00:01 hostname crond[8894]: (root) CMD (/data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb)
...
Mar 3 04:00:01 hostname crond[22398]: (root) CMD (/data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb)
...
그러나 로그 파일에는 항목이 없으며 업데이트해야하는 데이터가 업데이트되지 않았습니다. (테스트)를 로그 파일 권한도 쓰기 전역으로 설정했다 : 나는 CentOS는 5.
를 실행하고
$ ls -lh
total 19M
...
-rw-rw-rw- 1 myuser apps 7.4K Mar 3 13:19 myscript.log
...
그래서 내 질문은 ...
- 다른을 수행 할 수 있습니다 이 디버깅 정보를 찾으십시오?
- 이 문제가 SELinux 문제 일 수 있습니까? 이 오류를 해결할 수있는 보안 컨텍스트를 설정하거나 변경할 수 있습니까?
고맙습니다!
업데이트는 바울과 누가 복음 모두에게 감사합니다. 환경 문제로 판명 났으며 stderr
을 로그 파일로 캡처하면 오류를 찾을 수있었습니다.
$ crontab -l
0 4 * * * /usr/local/bin/ruby /data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb >> /data/myapp/current/log/cron.log 2>&1
저는 몇 년 동안 debian & 우분투 (vixie cron)의 /etc/cron.d에 심볼릭 링크를 아무런 문제없이 사용해 왔습니다. 사실, vixie cron은 그런 옵션을 갖고 있지 않습니다. – graywh