我正在perl脚本中执行以下命令。
#!/usr/bin/perl
my $MPSTAT="/usr/bin/mpstat";
my $GREP="/bin/grep";
my $FREE = "/usr/bin/free";
my $AWK = "/bin/awk";
my $cpu = `$MPSTAT | $GREP all | $AWK '{print (100 - \$12)}'`;
print "CPU is $cpu";
当我手动运行这个perl脚本时,它正在正确执行并在%(100 - 空闲CPU)中提供正确的 CPU使用率。
但是当我作为cronjob执行它时,它总是打印100&似乎$ 12的awk值为0.任何有关它在cron中表现不同的原因都会有所帮助。
答案 0 :(得分:3)
作为cron的孩子跑步的主要区别是:
第二部分通常意味着由于可能为普通用户设置的LANG
和LC_*
环境变量的值而不是在运行时,程序可能以不同的语言或数字格式输出在cron下(反之亦然)。
答案 1 :(得分:0)
使用@WinnieNicklaus提供的提示找到解决方案
mpstat在cron中给出了不同的结果。
正常执行:
04:53:18 PM all 49.51 0.00 4.79 2.67 0.02 0.34 0.00 0.00 42.68
在Cron内部:
16:54:01 all 49.51 0.00 4.79 2.67 0.02 0.34 0.00 0.00 42.68
由于PM没有在cron中打印,因此将awk的参数更改为$ 11而不是$ 12时,它开始工作。