我尝试使用以下命令每隔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")
答案 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做好了准备。