%3A%20%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8%2C%20%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D1%8C%20%D0%B2%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9%20%D1%84%D0%B0%D0%B9%D0%BB%20%D0%B2%D1%81%D0%B5%D0%B3%D0%B4%D0%B0%20%D0%B4%D0%B0%D0%B5%D1%82%20%D0%BF%D1%83%D1%81%D1%82%D0%BE%D0%B9%20%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82.png)
В моем CentOS я пытаюсь вывести выходные данные CPU USAGE и FREE MEMORY в текстовый файл. Но когда я печатаю в терминале, все нормально. Но когда это выполняется через crontab
вывод MEMORY, он всегда пустой.
Вводим вручную в терминале:
# 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}'