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

試してみてください!

関連情報