我的问题:
我在 perl 中有一个 if 语句,我尝试在启动 perl 脚本时通过环境变量检测它是通过 cron 作业启动的还是通过 shell 的正常执行启动的。
有没有办法在 crontab 本身中设置一个环境变量,以便 cron 启动的程序能够访问?
本质上,我希望将其放在我的 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