環境変数を使用して、cron によって起動されたプロセスを追跡する

環境変数を使用して、cron によって起動されたプロセスを追跡する

私の質問:

Perl には if ステートメントがあり、Perl スクリプトの起動時に環境変数を使用して、それが cron ジョブ経由で起動されたか、シェルを介した通常の実行経由で起動されたかを検出しようとします。

cron によって起動されたプログラムがアクセスできる環境変数を crontab 自体に設定する方法はありますか?

基本的に、crontab の先頭に次の内容を追加します。

COMPANYCRON=1

* * * * * someperl.pl

そして、someperl.pl では次の if ステートメントが実行されます:

if ( $ENV{'COMPANYCRON'} eq '1' ) {
    $job_creator = "cron";
}

これを実行する方法はありますか? または、cron ジョブを追跡するためのより良い方法はありますか?

答え1

一部の cron デーモン (例: Debian/Ubuntu の Vixie cron) では、例で記述したのとまったく同じ構文を使用できます。他のシステム (RHEL など) では、crontab で次のようなものを使用します。

* * * * * export COMPANYCRON=1; someperl.pl 

関連情報