Shell-Skript (in Crontab): Beim Speichern des Speicherausdrucks in eine Textdatei wird immer ein leeres Ergebnis ausgegeben.

Shell-Skript (in Crontab): Beim Speichern des Speicherausdrucks in eine Textdatei wird immer ein leeres Ergebnis ausgegeben.

In meinem CentOS versuche ich, die CPU-Auslastung und den freien Speicher in eine Textdatei zu drucken. Aber wenn ich in das Terminal tippe, ist alles in Ordnung. Aber wenn es über ausgeführt wird, crontabist die Speicherausgabe immer leer.

Manuelle Eingabe im Terminal:

# 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

Gleicher Befehl in Crontab:

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

Dann in der Textdatei:

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

Warum ist derRAMAusgabe bitte immer leer?

Antwort1

Weil dasher diese Art von Bashismus nicht versteht:

<(free -m)

Verwenden Sie stattdessen:

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

verwandte Informationen