Linux:特定のディレクトリでコマンドを実行する方法


16

私は単に与えられたディレクトリからcronジョブとしてコマンド(実際にはそのシェルスクリプト)を実行したいだけです。それは使用せずに、指定したディレクトリに設定されているように、どのように私はそれを実行することができますcd

回答:


16

あなたの質問はほとんど意味がありません。を使用しcdます。cd試してみてうまくいかなかったために、答えを使わないように頼んだ場合、crontabに正しく入力しなかった可能性があります。

最も簡単な方法は、メインタスクをcdして実行する小さなシェルスクリプトを作成し、スクリプトをcronすることです。


1
crontabを使用して、1つのジョブ内に複数のコマンドを配置できますか?そうでなければ、cd [path] をハーコードする必要があります。そして、パスが変更される可能性があり、したがって、本当に厄介な展開の問題を引き起こし、構成を分散化することもあります。
ゾンビ

1
@Zombies:はい、1つのジョブ内に複数のコマンドを入れることができます(たとえば、セミコロンまたはで区切る&&)が、すべてのコマンドを含む別のスクリプトを記述し、Daenythが提案したように、スクリプトへのパスをcronに入れることもできます。スクリプトは、必要に応じて構成ファイルからディレクトリを読み取るようなことを行うことができます。ポイントは、スクリプトにディレクトリ名を取得したいのですが、使用しないことの言い訳にはなりませんcd
デビッドZ

そうですか。crontabでcdを直接使用したいのは、ファイルに書き込む場合、各ファイルで編集する必要があるため、デリケートな/壊れやすい構成にするためです。
ゾンビ

3
また、cdをcrontabファイルに入れた場合は、各crontabファイルで編集する必要があります。私は問題を理解していません。たぶん、あなたはあなたがしようとしていることをより完全に説明することができます。
ゲイリージョン

また、crontabファイルからシェルスクリプトを実行するもう1つの理由は、環境が正しく設定されていることを確認するためです。cronジョブに与えられる環境は、通常はごくわずかであるため、通常はより使いやすい環境にリセットする必要があります。
ジョナサンレフラー

60

スクリプトへのパスを指定するだけです。必要なしcd

0 12 * * * /path/to/script args

スクリプトがでファイルを探す場合、次を使用する.必要ありますcd

0 12 * * * cd /some/dir && /path/to/script args


4
&&、@ WillSheppardへのリンクの回答のように、前のコマンドが成功した場合にのみ次のコマンドを実行する;ためよりも良いでしょう&&
マックスハイバー

1
@mheiber:修正済み
通知があるまで一時停止。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.