Nota: Esta resposta é uma extensão da resposta do artistoex .
Este comando deve exibir todos os comandos atualmente em execução executados pelo usuário atual e iniciados nos últimos 60 segundos:
ps x --sort -start_time -U YOURUSERNAME -o start,command | \
awk '$1>=recently&&$1<=now' \
recently=$(date --date='60 seconds ago' +%T) now=$(date +%T) | sed 1,1d
Para usar este comando, clique em um ícone ou item de menu para executar um comando e enquanto o programa que acabou de ser aberto ainda estiver em execução, execute o comando acima. Lembre-se de substituir YOURUSERNAME pelo nome de usuário atual.
Explicação :
ps exibirá os processos em execução no momento. Explicação dos argumentos ps :
-
x : inclui processos não executados através de um terminal (na verdade, tty ). Adicionar -t '?' exibiria apenas processos não associados a um terminal.
-
--sort -start_time : classifica a saída no momento em que o processo foi iniciado (ordem decrescente)
-
-U YOURUSERNAME : Substituir YOURUSERNAME pelo seu nome de usuário mostrará apenas os processos executados por seu usuário. Essa restrição pode ser removida, se necessário.
-
-o start,command : Exibe duas colunas na saída: a hora de início do processo e o comando que foi executado
awk é usado aqui para mostrar apenas os processos executados recentemente. Explicação dos argumentos awk :
-
$1>=recently&&$1<=now : restringe a saída a processos que foram executados nos últimos 60 segundos. Para alterar este período de tempo, modifique o próximo argumento ( recently atribuição de variável)
-
recently=$(date --date='60 seconds ago' +%T) : defina o awk variable recently usado no argumento anterior para 60 segundos atrás no formato HH:MM:SS ( ps time format).
-
now=$(date +%T) : defina a awk variable now para a hora atual (isto é para excluir processos executados há menos de 24 horas que pareceriam que foram executados no futuro)
Eu adicionei sed 1,1d para excluir a primeira linha de saída porque mostrará o comando atualmente em execução, que é inútil exibir.
Lembre-se: Usar ps para descobrir qual processo foi executado não funcionará como esperado para determinados programas. Por exemplo, se você clicar em um atalho do Firefox, mas o Firefox já estiver em execução, um novo processo não será criado e a hora de início do processo antigo não será alterada. No entanto, esse método funciona razoavelmente bem para muitos programas.