私の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
プロモーションスクリプトに追加できます。