ルートcrontabで毎日実行するジョブを設定したいと思います。しかし、アプリケーションには多数の相対パスがあるため、特定のディレクトリから実行して、必要なすべてのファイルを見つけることができるようにしたいと思います。
とにかく、特定のディレクトリから実行するようにcrontabに指示できますか?
ルートcrontabで毎日実行するジョブを設定したいと思います。しかし、アプリケーションには多数の相対パスがあるため、特定のディレクトリから実行して、必要なすべてのファイルを見つけることができるようにしたいと思います。
とにかく、特定のディレクトリから実行するようにcrontabに指示できますか?
回答:
すべてのジョブはシェルによって実行されるため、ディレクトリを変更するコマンドでそのシェルスニペットを開始します。
cd /path/to/directory && ./bin/myapp
&&代わりにの使用に関して;:通常は違いはありませんが、cdコマンドが失敗した場合(たとえば、ディレクトリが存在しないため)&&、アプリケーションでは実行されませんが、;実行されます(ただし、目的のディレクトリでは実行されません))。
;、ダブルアンパサンドの代わりにセミコロンを使用できます&&か、それとも機能しませんか?なぜ?
cdコマンドが失敗した場合(たとえば、ディレクトリが存在しないため)、を使用する&&と、アプリケーションは実行されません。を使用すると;、実行されます(ただし、目的のディレクトリでは実行されません)。
SHELL、crontabで設定することで、どのシェルを(たとえばshではなくbashが必要な場合)選択できることを追加します。