Como gravar o PID e seu comando a cada 15s?

0

Para fins de solução de problemas, eu gostaria de gravar o PID e seu comando a cada 15s e gravá-los em um arquivo de texto.

A saída desejada: TimeStamp, PID, Command

    
por John Hass 07.11.2018 / 22:30

1 resposta

1

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]"' . Aqui perl é Perl. Os sinalizadores -anle são reprimidos correspondentemente: a - carrega entrada em um array, n - cuida de novas linhas, l - processa cada linha e finalmente e - 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.
por 07.11.2018 / 22:39