Shell 脚本(在 Crontab 中):将内存打印保存到文本文件中始终显示空白

Shell 脚本(在 Crontab 中):将内存打印保存到文本文件中始终显示空白

在我的 CentOS 中,我试图将 CPU 使用情况和可用内存输出数字打印到文本文件中。但是当我在终端中输入时,一切都很好。但当它通过 MEMORY 输出执行时crontab始终为空。

在终端手动输入:

# echo CPU: `top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}'`, RAM: `awk '/^Mem/ {print $4}' <(free -m)` >> ~/stats.txt
# cat ~/stats.txt
CPU: 3.8, RAM: 1307

Crontab 中的相同命令:

*/10 * * * * echo CPU: `top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}'`, RAM: `awk '/^Mem/ {print $4}' <(free -m)` >> ~/stats.txt

然后在文本文件中:

# cat ~/stats.txt
CPU: 3.4, RAM: 
CPU: 4.1, RAM: 
CPU: 3.9, RAM: 

为什么是内存输出总是空白吗?

答案1

因为dash不理解这种羞辱:

<(free -m)

相反,使用:

free -m | awk '/^Mem/ {print $4}'

相关内容