mata um processo pelo nome se estiver executando por mais de 24 horas

2

Atualmente estou tentando matar qualquer programa que tenha passado 48 horas com o nome "cool-programme"

Eu entendo que se eu correr

ps -eo pid,cmd,comm,etime | grep -i  cool-program | grep -v grep

dá-me uma lista dos programas, agora não sei como filtrar isso ainda mais para os programas que foram executados ao longo de um dia

dados os comentários para que seja impressa uma lista do pid do programa legal que estou usando, mas quando tento e canalizo isso para kill ele não mata os programas

ps -eo bsdstart,pid,comm | grep -i ffmpeg | grep -v '^[ 0-9]' | awk '{ print  }'
    
por nadermx 23.10.2017 / 23:44

1 resposta

2

Na página man de ps , ele informa se você usa bsdstart mostrará a hora em que o comando foi iniciado:

   bsdstart    START     time the command started.  If the process was
                         started less than 24 hours ago, the output format
                         is " HH:MM", else it is " Mmm:SS" (where Mmm is
                         the three letters of the month).  See also
                         lstart, start, start_time, and stime.

Depois, você pode usar um comando combinado para puxar a data, pid e o comando em execução e usar o grep para excluir -v das linhas que começam com números ou espaços e números como:

ps -eo bsdstart,pid,cmd | grep -i cool-porgram | grep -v '^[ 0-9]'

Para matá-los, o comando seria:

sudo kill $(ps -eo bsdstart,pid,cmd | grep -i cool-porgram | grep -v '^[ 0-9]' | awk '{print }')

Espero que isso ajude!

    
por Terrance 24.10.2017 / 00:30