【发布时间】:2012-11-05 09:51:15
【问题描述】:
我在 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 脚本时,它会正确执行并提供正确的 CPU 使用率(以 %(100 - 空闲 CPU)为单位)。
但是当我将它作为一个 cronjob 执行时,它总是打印 100 并且 awk 的 12 美元似乎得到了 0 的值。任何关于它在 cron 中为什么表现不同的指针都会有所帮助。
【问题讨论】:
-
去掉
awk语句,只打印grep的整个输出。然后你就可以看到awk的输入是否与你期望的不同。 -
如果您从此代码中删除
my $,则它的有效外壳代码。用这种方式写 perl 是一件坏事。 -
@jordanm 是的,我同意。但是这里我只是复制了 900 行 perl 脚本的一小部分。