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.