Crontab-ディレクトリで実行


170

ルートcrontabで毎日実行するジョブを設定したいと思います。しかし、アプリケーションには多数の相対パスがあるため、特定のディレクトリから実行して、必要なすべてのファイルを見つけることができるようにしたいと思います。

とにかく、特定のディレクトリから実行するようにcrontabに指示できますか?

回答:


318

すべてのジョブはシェルによって実行されるため、ディレクトリを変更するコマンドでそのシェルスニペットを開始します。

cd /path/to/directory && ./bin/myapp

&&代わりにの使用に関して;:通常は違いはありませんが、cdコマンドが失敗した場合(たとえば、ディレクトリが存在しないため)&&、アプリケーションでは実行されませんが、;実行されます(ただし、目的のディレクトリでは実行されません))。


ほとんど重複する回答を追加するのではなくSHELL、crontabで設定することで、どのシェルを(たとえばshではなくbashが必要な場合)選択できることを追加します。
Edd Steel

12
+1。他のすべての関連する質問の解決策は、絶対パスを使用してスクリプトを書き直すことです。これは私がまさに必要である
Conrad.Dean

2
好奇心から;、ダブルアンパサンドの代わりにセミコロンを使用できます&&か、それとも機能しませんか?なぜ?
ジョシュアピンター

32
@JoshPinter通常は違いはありません。ただし、cdコマンドが失敗した場合(たとえば、ディレクトリが存在しないため)、を使用する&&と、アプリケーションは実行されません。を使用すると;、実行されます(ただし、目的のディレクトリでは実行されません)。
Gilles「SO-邪悪なことをやめる」

1
私はどうもありがとうございました、あなたは私のソースファイルを変更してから私を救った、私のアプリケーションのすべてのcronジョブにこれを行います
会計士مを
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.