Porque dash
não entende esse tipo de bashismo:
<(free -m)
Em vez disso, use:
free -m | awk '/^Mem/ {print $4}'
No meu CentOS, estou tentando imprimir os números de saída CPU USE e FREE MEMORY em um arquivo de texto. Mas quando eu digito no terminal, está tudo bem. Mas quando é executado via crontab
, a saída MEMORY está sempre em branco.
Digitando manualmente no 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
Mesmo comando no Crontab:
*/10 * * * * echo CPU: 'top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}'', RAM: 'awk '/^Mem/ {print $4}' <(free -m)' >> ~/stats.txt
Em seguida, dentro do arquivo de texto:
# cat ~/stats.txt
CPU: 3.4, RAM:
CPU: 4.1, RAM:
CPU: 3.9, RAM:
Por que a saída RAM está sempre em branco, por favor?
Tags cron memory shell-script