Como faço para salvar a saída de free
/ vmstat
a cada dois minutos?
Via cron
, date
e redirecionamento de saída .
Se você precisar da saída de free
de vez em quando (nesse caso, dois minutos), esse é um trabalho ideal para cron
:
The software utility Cron is a time-based job scheduler in Unix-like computer operating systems. People who set up and maintain software environments use cron to schedule jobs (commands or shell scripts) to run periodically at fixed times, dates, or intervals.
Citado no primeiro parágrafo do artigo da Wikipédia sobre cron
.
free
, vmstat
e date
Primeiro, a saída que você deseja. Você não diz como deseja formatá-lo; por isso, se tudo o que você quer é uma data / hora e a saída inalterada, echo
* funcionará bem:
$ echo -e "'date'\n\n'free'\n\n'vmstat'" Tue 28 Mar 00:32:07 BST 2017 total used free shared buffers cached Mem: 16392592 16204636 187956 280584 9257448 1249596 -/+ buffers/cache: 5697592 10695000 Swap: 964604 0 964604 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 187956 9257448 1249596 0 0 201 24 111 84 5 1 94 0 0
Se isso é realmente o que você quer. Note que free
pode ser formatado em números 'legíveis por humanos', passando -h
:
$ free -h total used free shared buffers cached Mem: 15G 15G 227M 274M 8.8G 1.2G -/+ buffers/cache: 5.5G 10G Swap: 941M 0B 941M
* algumas pessoas podem pedir para você usar printf
em vez disso, por exemplo, printf "%s\n\n%s\n\n\%s\n\n" "$(date)" "$(vmstat)" "$(free)"
). Observe que tivemos que fornecer uma opção -e
para echo
acima para ativar escapes de barra invertida; embora isso não seja necessário no crontab
depois.
De vez em quando para um arquivo - via cron
e redirecionamento
Como acima, cron
executará um comando de acordo com um intervalo especificado.
No seu caso, a cada dois minutos, você pode querer algo como:
$ crontab -l # m h dom mon dow command */2 * * * * echo -e "'date'\n\n'free'\n\n'vmstat'\n" >> /home/root/free_vmstat_output.txt
Observe que crontab -l
lista o conteúdo do crontab
; crontab -e
abre no editor padrão.
Aqui */2
na coluna m
significa ' a cada dois minutos ', o *
nas outras colunas significa 'a cada hora / dia do mês / mês / dia da semana '.
O >>
após o comando é um redirecionador de saída , neste caso, significa ( mais ou menos) 'acrescente esta saída ao seguinte arquivo' .
TL; DR
Se você quiser salvar a saída de date
, free
e vmstat
em um arquivo a cada dois minutos, adicione a seguinte linha ao seu crontab (via crontab -e
):
*/2 * * * * echo "'date'\n\n'free'\n\n'vmstat'\n" >> /home/root/free_vmstat_output.txt
Leitura Adicional
Eu não sou afiliado a nenhum dos seguintes, mas eles podem ser de alguma ajuda .
-
'Introdução a
cron
' de unixgeeks. - redirecionamento de entrada / saída de 'Introdução ao Linux' (ou a diferente do TAMU.edu)
-
printf
info