Meine Frage:
Ich habe eine if-Anweisung in Perl, bei der ich versuche, über Umgebungsvariablen beim Starten des Perl-Skripts festzustellen, ob es über einen Cron-Job oder über die normale Ausführung über die Shell gestartet wurde.
Gibt es eine Möglichkeit, in der Crontab selbst eine Umgebungsvariable festzulegen, auf die ein von Cron gestartetes Programm zugreifen kann?
Im Wesentlichen möchte ich dies oben in meiner Crontab haben:
COMPANYCRON=1
* * * * * someperl.pl
Und in someperl.pl diese if-Anweisung:
if ( $ENV{'COMPANYCRON'} eq '1' ) {
$job_creator = "cron";
}
Gibt es eine Möglichkeit, dies zu tun? Oder einen besseren Ansatz, um Cron-Jobs im Auge zu behalten?
Antwort1
Einige Cron-Daemons (z. B. Vixie Cron unter Debian/Ubuntu) erlauben genau dieselbe Syntax, die Sie in Ihrem Beispiel geschrieben haben. Verwenden Sie auf anderen Systemen (RHEL usw.) so etwas wie das Folgende in Ihrer Crontab:
* * * * * export COMPANYCRON=1; someperl.pl