シェルスクリプト(Crontab):メモリ印刷をテキストファイルに保存すると、常に空白が表示されます。

シェルスクリプト(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}'

関連情報