![使用环境变量来跟踪 cron 启动的进程](https://linux22.com/image/594008/%E4%BD%BF%E7%94%A8%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E6%9D%A5%E8%B7%9F%E8%B8%AA%20cron%20%E5%90%AF%E5%8A%A8%E7%9A%84%E8%BF%9B%E7%A8%8B.png)
我的问题:
我在 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