GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo elimino los procesos anteriores a t?

Solución 1:

GNU Killall puede matar procesos anteriores a una edad dada, utilizando su nombre de proceso.

if [[ "$(uname)" = "Linux" ]];then killall --older-than 1h page.py;fi

Solución 2:

Gracias a la respuesta de Christopher pude adaptarlo a lo siguiente:

find /proc -maxdepth 1 -user apache -type d -mmin +60 -exec basename {} \; \
| xargs ps | grep page.py | awk '{ print $1 }' | sudo xargs kill

-mmin era el comando de búsqueda que me faltaba.

Solución 3:

find no siempre funciona, no todos los sistemas tienen etimes disponibles, y podría ser mi estado de regex newb, pero no creo que necesites nada más que esto:

ps -eo pid,etimes,comm,user,tty | awk '{if ($4 ~ /builder/ && $5 ~ /pts/ && $2>600) print $1}'
  • enumere todos los procesos y proporcione las columnas PID, ELAPSED(etimes =segundos), COMMAND, USER, TT (gracias @ahoffman)
  • con awk imprima el PID donde la cuarta columna ($4, USUARIO) contiene el texto 'constructor', y la quinta columna ($5, TT) contiene el texto 'pts' y la columna TRANSCURRIDO tiene un valor mayor a 600 segundos (gracias @ amd)

luego puedes canalizar eso para matar o lo que sea que necesites.

Solución 4:

# get elapsed time in seconds, filter our only those who >= 3600 sec
ps axh -O etimes  | awk '{if ($2 >= 3600) print $2}'

Si quieres puedes alimentar a ps con una lista de PID para buscar dentro, por ej. ej.:

ps h -O etimes 1 2 3

Solución 5:

Creo que puede modificar algunas de esas respuestas anteriores para satisfacer sus necesidades. A saber:

for FILE in (find . -maxdepth 1 -user processuser -type d -mmin +60)
  do kill -9 $(basename $FILE) # I can never get basename to work with find's exec.  Let me know if you know how!
done

O

ps -eo pid,etime,comm | awk '$2!~/^..:..$/ && $3~/page\.py/ { print $1}' | kill -9

Creo que la segunda puede ajustarse mejor a tus necesidades. La versión de búsqueda terminaría destruyendo otros procesos por parte de ese usuario


--Christopher Karel


Linux
  1. ¿Qué son los procesos zombis y cómo encontrar y eliminar procesos zombis?

  2. Cómo matar procesos en ejecución en Linux

  3. Cómo eliminar archivos de más de N días usando tmpreaper en Linux

  4. ¿Cómo matar todos los procesos con un nombre parcial dado?

  5. ¿Cómo eliminar todos los procesos en segundo plano en zsh?

Cómo matar procesos Zombie en Ubuntu 20.04 LTS

Cómo eliminar archivos anteriores a los días especificados en Linux

Cómo usar el comando PS

Cómo matar procesos Zombie en Ubuntu

Cómo matar procesos en Linux usando kill, killall y pkill

Cómo eliminar procesos de MySQL en phpMyAdmin