使用环境变量来跟踪 cron 启动的进程

使用环境变量来跟踪 cron 启动的进程

我的问题:

我在 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 

相关内容