Cronjobは他のスクリプトを呼び出すスクリプトを実行します。

Cronjobは他のスクリプトを呼び出すスクリプトを実行します。

私のcronjobは次のようになります

0 3 * * 0-6 somedir/promotionscript

ただし、Promotionscriptは実際にsomedirの親フォルダにある別のファイル「config」を呼び出します。

#promotionscript
#!/bin/csh
source ../config

ただし、構成:そのファイルまたはディレクトリはありません。そのため、cronjobが特定のディレクトリで実行されていないと考えて、プロモーションスクリプトの実行を開始すると、特定のディレクトリについてはわかりません。 cronjob が親フォルダで構成を検索できるようにする方法.

考えられる解決策の1つは、設定にフルパスを追加できることです。

source fullpath/config

しかし、cronjobにフルパスを直接認識させる方法はありますか?

答え1

dirnameシェルまたはシェルスクリプトの名前から取得します$0。次に、次のようにします。

source `dirname $0`/../config

答え2

cd somedirでは、ハードコーディングを防ぐためにPromotionscriptではなくcronjobに追加する必要があります。たとえば、次のようになります。

0 3 * * 0-6 cd somedir;promotionscript

そして..オペレータはプロモーションスクリプトで期待どおりに動作します。

答え3

Cronはホームディレクトリからコマンドを実行します。これをcd somedirプロモーションスクリプトに追加できます。

関連情報