Isso te dará as três colunas que você deseja:
$ ps -hopid,comm | perl -anle'print time, ", $F[0], $F[1]"'
1541626566, 6496, gedit
1541626566, 7513, bash
Você pode limitar ou ampliar o escopo de ps
, ou seja. quais processos ele lista. Então você coloca isso em um loop com redirecionamento.
while true; do echo x; sleep 15; done > out
Substitua echo x
pelo comando correto e out
pelo nome do arquivo escolhido.
Quanto ao comando que produz a informação, aqui está um resumo.
-
ps -hopid,comm
-ps
é óbvio,-h
desativa a linha de cabeçalho e-o
representa a saída (PID e comando). - Isso vai para o comando Perl, ou seja,
perl -anle'print time, ", $F[0], $F[1]"'
. Aquiperl
é Perl. Os sinalizadores-anle
são reprimidos correspondentemente:a
- carrega entrada em um array,n
- cuida de novas linhas,l
- processa cada linha e finalmentee
- executa o código que segue. / li> - E agora o código segue:
'print time, ", $F[0], $F[1]"'
. Primeiro, imprima o registro de data e hora, depois a primeira coluna da matriz que contém o material de entrada e, em seguida, a segunda.