Shell Script (no Crontab): Salvar a impressão da memória no arquivo de texto sempre dá espaço em branco

0

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?

    
por 夏期劇場 22.09.2016 / 17:59

1 resposta

1

Porque dash não entende esse tipo de bashismo:

<(free -m)

Em vez disso, use:

free -m | awk '/^Mem/ {print $4}'
    
por 22.09.2016 / 18:07