找出谁/什么叫脚本(cron)

时间:2011-01-10 10:00:59

标签: linux perl shell unix cron

我最近遇到了一个问题,就是某个人的cron工作正在调用一个脚本,该脚本在运行时会向我发送警报。我想知道它的工作是什么以及它运行的服务器。

问题已由其他人解决,但我想知道我可以做些什么来找出正在运行作业的主机/用户名。我能想到的一件事是编辑脚本(Perl)并使用Sys :: Hostname。还有什么吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

正如您所说,您可以使用Sys::Hostname获取主机名。您还可以使用getpwuid($<)获取用户名:

use Sys::Hostname;

my $info = getpwuid($<) . '@' . hostname;

print "$info\n"; # prints user@host

答案 1 :(得分:1)

除非您使用邮件发送警报,否则没有自动方法。邮件包含标题中的主机名,因此您至少可以看到它来自何处(用户和主机)。然后,时间戳应该有助于找到cron作业。

对于所有其他形式的警报(短信,寻呼机等),您应该制定一项政策,在邮件中包含用户和主机名。

答案 2 :(得分:1)

您还可以添加到您的脚本:print `env|sort`; - 这将显示USERNAME或LOGNAME。如果您不想弄乱程序的输出,请将其记录到文件中:

use POSIX 'strftime';
open my $log, '>>', 'logfile' or die "can't append to logfile: $!\n";
print $log strftime(%Y-%m-%d %T", localtime), " - starting $0\n";
print $log `env|sort`;
close $log;