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

Liv*_*Com 3 unix linux shell 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
Run Code Online (Sandbox Code Playgroud)

因此我为此制作了一个非常小的(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")
Run Code Online (Sandbox Code Playgroud)

小智 7

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

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

脚本如下

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

内存=/usr/bin/top -b -n 1 -u mysql

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