2

crontab で次のようなコマンドを実行する必要があります。

*/1 * * * * find /etc -type f \( ! -perm /o=w \) -exec sh -c "/bin/ls -hastl '{}' | tr '\n' ' '" \; -exec sh -c "/usr/bin/md5sum '{}' | cut -d ' ' -f 1 " \; > /tmp/crontable/daily/log/$(hostname)_$(date +"%F").log

しかし、それは何もしません、cronはこのコマンドを実行しませんが、一般的なシェルではうまく機能します.cronで何が間違っていますか? 他のcronタスクはうまく機能しています。

4

2 に答える 2

3

%は crontab の特殊文字です (改行を意味します)。エスケープしてみてください: \%.

からman 5 crontab:

行のコマンド部分全体 (改行または % 文字まで) は、/bin/sh または crontab ファイルの SHELL 変数で指定されたシェルによって実行されます。バックスラッシュ (\) でエスケープされていない限り、コマンド内のパーセント記号 (%) は改行文字に変更され、最初の % の後のすべてのデータが標準入力としてコマンドに送信されます。

于 2013-08-01T20:27:22.893 に答える
0

ステップ 1 はログを確認することです。通常は/var/log/syslog(ubuntu、debian) などです。

これにはいくつかの理由が考えられますが、最も一般的なのは PATH がないことです。さまざまなコマンドにフル パスを追加してみてください。例:/usr/bin/find代わりにfind

于 2013-08-01T20:21:37.423 に答える