1つの単純な.shスクリプトがあります。
#!/bin/bash
echo "Test1"
touch /home/john/test.txt
echo "Test2"
実行可能で利用可能です(ugo + x)。このスクリプトを実行すると、期待どおりに機能します。
しかし、crontabで実行しようとしても、結果は得られません。ログでジョブを開始すると、(MTAがインストールされていないため、出力を破棄しています)と表示されます。
知っている-このメッセージはエラーではありませんか?メール(または他の出力チャネル)がないことを意味しますか?しかし、なぜスクリプトからの結果がないのでしょうか?ところで-CRONTABでは次の行を使用します:
30 * * * * sh file.sh >> /home/john/log.log
何か案が?
スクリプトが実行可能な場合、/bin/sh file.sh
を実行するcrontabを持っている必要はありません。
また、file.sh
は、おそらくcrontabが実行されているディレクトリにありません。 /path/to/file.sh
を使用することをお勧めします
Crontabの出力をリダイレクトすると、stderrもキャッチできます。 stdoutとstderrの両方をキャッチしたので、出力をリレーする機能についてcrontabが文句を言わなくなったことを思い出すようです。
30 * * * * /path/to/file.sh >> /home/john/log.log 2>&1
皆様のご提案により、間違いを発見しました。 crontabでフルパスを使用しなかったため、これが理由でした。