다음 셸 스크립트 줄은 cron 작업으로 작동하지 않지만 터미널에서 직접 실행되므로 잘 작동합니다.
#!/bin/bash
echo "Executed" >> ./crond.log 2>&1
무엇이 문제일까요?
/var/log/cron을 확인하고 cron이 시간에 맞춰 작업을 시작하는지 확인하세요.
May 16 10:30:01 vagrant-centos64 CROND[3015]: (root) CMD (sh /vagrant/my.sh)
May 16 10:35:01 vagrant-centos64 CROND[3122]: (root) CMD (sh /vagrant/my.sh)
May 16 10:40:01 vagrant-centos64 CROND[3189]: (root) CMD (sh /vagrant/my.sh)
May 16 10:45:01 vagrant-centos64 CROND[3270]: (root) CMD (sh /vagrant/my.sh)
May 16 10:50:01 vagrant-centos64 CROND[3343]: (root) CMD (sh /vagrant/my.sh)
May 16 10:55:01 vagrant-centos64 CROND[3430]: (root) CMD (sh /vagrant/my.sh)
crontab 작업 목록은 다음과 같습니다.
*/5 * * * * sh /vagrant/mypagelogin.sh
*/5 * * * * sh /vagrant/my.sh
[root@vagrant-centos64 vagrant]#
crond.log에 대한 액세스 권한은 다음과 같습니다.
-rwxrwxrwx 1 vagrant vagrant 0 May 16 10:51 crond.log
업데이트: crond.log 파일은 my.sh와 동일한 위치에 있습니다. [/도보 여행가]
답변1
클럽의 첫 번째 규칙 crond
: 작업 디렉토리를 가정하지 않습니다. 내 생각 crond.log
엔 에서 하나를 찾을 수 있을 것 같아요 /root
. 입력되도록 하려면 /vagrant
출력을 명시적으로 로 리디렉션하십시오 /vagrant/crond.log
.
(FWIW, 클럽의 두 번째 규칙 crond
은: 당신의 것에서 아무것도 가정하지 말고 PATH
, 바이너리에 대한 명시적인 경로를 사용하십시오. 그러나 echo
그것은 또한 bash 내장이므로 괜찮습니다.)
답변2
작성되었지만 찾고 있는 곳이 없습니다. 가장 좋은 방법은 절대 경로를 사용하는 것입니다.