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}'

相關內容