web-dev-qa-db-ja.com

CrontabでSHスクリプトを実行するにはどうすればよいですか

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

何か案が?

2
JanezKranjski

スクリプトが実行可能な場合、/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
4
SYN

皆様のご提案により、間違いを発見しました。 crontabでフルパスを使用しなかったため、これが理由でした。

0
JanezKranjski