crontab을 사용하여 쉘 스크립트가 실행되지 않습니다

crontab을 사용하여 쉘 스크립트가 실행되지 않습니다

이건 내 스크립트야

mboxutil -l > n.txt
sed 's/^.*user//' n.txt > n1.txt
cat n1.txt | sed 's/^.//' > n2.txt
sed 's/\/.*//' n2.txt > dss_list.txt
rm -f n.txt
rm -f n1.txt
rm -f n2.txt

sed -e '/^$/d' -e '1d' dss_list.txt > all-dss-accounts.txt
rm -f dss_list.txt
CNT=`wc -l < all-dss-accounts.txt`
mailx -s "DSS count on `date` is $CNT" [email protected] < all-dss-accounts.txt

스크립트를 직접 실행하면 실행됩니다. 하지만 crontab에서는 제대로 실행되지 않습니다.

크론 항목입니다.

10 14,16,18,20,22 29 6 * /root/scripts/extract.sh

매년 6월 29일 오후 2시, 4시, 6시, 8시, 10시 10분.

잘 모르겠지만 스크립트를 사용하여 임시로 만든 .txt 파일에는 그 아래에 만들어야 하는 디렉터리가 포함되어야 한다는 느낌이 듭니다.

내가 맞나요? 도와주세요!

답변1

출력 파일 및 가능한 경우 실행 파일의 전체 경로를 사용해야 합니다. cron에서 실행할 때 작업 디렉터리나 경로와 같은 정보를 알 수 있는 기존 환경이 없습니다.

답변2

기능을 보장하려면 전체 경로를 사용하세요.

mboxutil경우 명령이 어디에 있는지 알아야 합니다.

구현하다:

$ type -a mboxutil
mboxutil is hashed /opt/sun/comms/messaging64/bin/mboxutil

스크립트를 업데이트하세요.

/opt/sun/comms/messaging64/bin/mboxutil -l > /path/to/n.txt
sed 's/^.*user//' /path/to/n.txt > /path/to/n1.txt
cat /path/to/n1.txt | sed 's/^.//' > /path/to/n2.txt
sed 's/\/.*//' /path/to/n2.txt > /path/to/dss_list.txt
rm -f /path/to/n.txt
rm -f /path/to/n1.txt
rm -f /path/to/n2.txt

sed -e '/^$/d' -e '1d' /path/to/dss_list.txt > /path/to/all-dss-accounts.txt
rm -f /path/to/dss_list.txt
CNT=`wc -l < /path/to/all-dss-accounts.txt`
cat /path/to/all-dss-accounts.txt | mail -s "DSS count on `date` is $CNT" [email protected]

chmod파일 권한 문제를 건너뛰려면 스크립트 끝에 다음 줄을 추가하세요.

chmod 777 /path/to/all-dss-accounts.txt

시도 해봐!

관련 정보