Cron 작업: 쉘 스크립트 출력을 파일로 리디렉션

Cron 작업: 쉘 스크립트 출력을 파일로 리디렉션

다음 셸 스크립트 줄은 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

작성되었지만 찾고 있는 곳이 없습니다. 가장 좋은 방법은 절대 경로를 사용하는 것입니다.

관련 정보