从cron运行时,Top命令输出为空

时间:2015-12-09 17:55:19

标签: linux shell unix cron

我尝试使用以下命令每隔5分钟重定向特定文件中的TOP命令输出。

top -b -n 1 > /var/tmp/TOP_USAGE.csv.$(date +"%I-%M-%p_%d-%m-%Y")

-rw-r--r--   1 root root 0 Dec  9 17:20 TOP_USAGE.csv.05-20-PM_09-12-2015
-rw-r--r--   1 root root 0 Dec  9 17:25 TOP_USAGE.csv.05-25-PM_09-12-2015
-rw-r--r--   1 root root 0 Dec  9 17:30 TOP_USAGE.csv.05-30-PM_09-12-2015
-rw-r--r--   1 root root 0 Dec  9 17:35 TOP_USAGE.csv.05-35-PM_09-12-2015

因此我为此制作了一个非常小的(1行)shell脚本,这样我就可以通过cronjob每5分钟运行一次。

问题是当我手动运行此脚本然后我可以看到文件中的输出,但是当此脚本自动运行时,文件每5分钟生成一次但没有数据(也就是文件为空)

有人可以帮我吗?

我现在修改了脚本,但它仍然是相同的。

#!/bin/sh
PATH=$(/usr/bin/getconf PATH)

/usr/bin/top -b -n 1 > /var/tmp/TOP_USAGE.csv.$(date +"%I-%M-%p_%d-%m-%Y")

2 个答案:

答案 0 :(得分:1)

我遇到了和你一样的问题。

必须添加带-b选项的top命令。在使用之前将顶部输出保存到变量。

脚本在

之下

日期>> /tmp/mysql-mem-moniter.log

MEM = /usr/bin/top -b -n 1 -u mysql

echo“$ MEM”| grep mysql>> /tmp/mysql-mem-moniter.log

答案 1 :(得分:0)

从cron传递到脚本的环境很可能太小了。特别是,PATH可能不是您认为的那样(没有从cron开始的脚本读取配置文件)。

PATH=$(/usr/bin/getconf PATH)放在脚本的开头,然后使用

运行它
/usr/bin/env -i /path/to/script

一旦没有错误,它已经为cron做好了准备。