シェル スクリプト (Crontab 内): メモリ印刷をテキスト ファイルに保存すると常に空白になる

シェル スクリプト (Crontab 内): メモリ印刷をテキスト ファイルに保存すると常に空白になる

CentOS で、CPU 使用量と空きメモリの出力数値をテキスト ファイルに出力しようとしています。しかし、ターミナルに入力すると、すべて正常です。しかし、経由で実行すると、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}'

関連情報