2

簡単な bash スクリプトを作成して、いくつかのファイルを見つけてコマンドを実行しました。このコマンドは、実行ごとに保存する必要があるコンテンツを出力する必要があります。

だから、私は次のようなものを持っています:

find /some/folder/ -name "*txt" -exec /bin/sh -c "/path/command -x -f {} > {}.pdf" \;

したがって、 /some/folder/内の txt ファイルを見つけて、 1 つにつき 1 つ/path/commandを実行し、filepath を/path/commandのパラメータ-fに渡し、バイナリを取得するので、出力を取得して追加するだけです。サフィックス.pdf

問題は、これを手動で実行すると、すべてがうまくいったことです。しかし、これをcronに入れると、次のことが起こります:

  • 存在する場合/some/folder/sample.txt私は /some/folder/sample.txt.pdf を取得しました(したがって、検索して>は正常に動作するようです)、 /path/commandによって実行されるようですが、 -f /someは使用しません。 /folder/sample.txtパラメータ。
  • /path/commandは-f /some/folder/sample.txtを取得しないようで、作成された/some/folder/sample.txt.pdf内に-fパラメータを何かで取得する必要があることを示す警告メッセージを出力します。

繰り返しますが、これをコマンドラインで (cron ではなく) 実行すると、すべてがうまくいくことに注意してください。

ここで何か間違ったことはありますか?

サポートに感謝します。

4

1 に答える 1

-1

絶対 pthes を使用する必要があります。

「find」の代わりに「/usr/bin/find」

何が問題なのかを確認するには、この方法でコマンド ラインを呼び出します

env -i  mycommands ....

これにより、セッションの環境が取り除かれ、cron 環境に非常によく似た環境でコマンドが実行されます。

次に、crontab のエントリを修正します。

于 2013-09-08T15:31:15.723 に答える