我最近遇到了一个问题,就是某个人的cron工作正在调用一个脚本,该脚本在运行时会向我发送警报。我想知道它的工作是什么以及它运行的服务器。
问题已由其他人解决,但我想知道我可以做些什么来找出正在运行作业的主机/用户名。我能想到的一件事是编辑脚本(Perl)并使用Sys :: Hostname。还有什么吗?
谢谢!
答案 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;