GNU/Linux >> Linux Esercitazione >  >> Linux

Come uccido i processi più vecchi di t?

Soluzione 1:

GNU Killall può terminare i processi più vecchi di una data età, usando il loro nome di processo.

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

Soluzione 2:

Grazie alla risposta di Christopher sono stato in grado di adattarlo a quanto segue:

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 il comando find che mi mancava.

Soluzione 3:

find non funziona sempre, non tutti i sistemi hanno etimes disponibili e potrebbe essere il mio stato regex newb, ma non penso che tu abbia bisogno di qualcosa di più di questo:

ps -eo pid,etimes,comm,user,tty | awk '{if ($4 ~ /builder/ && $5 ~ /pts/ && $2>600) print $1}'
  • elenca tutti i processi e fornisci le colonne PID,ELAPSED(etimes =seconds), COMMAND, USER, TT (grazie @ahoffman)
  • con awk stampa il PID dove la 4a colonna ($4, USER) contiene il testo 'builder', e la 5a colonna ($5, TT) contiene il testo 'pts' e la colonna ELAPSED ha un valore maggiore di 600 sec (grazie @ amtd)

puoi quindi convogliarlo per uccidere o qualunque sia la tua necessità.

Soluzione 4:

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

Se vuoi puoi nutrire ps con l'elenco dei PID da cercare all'interno, ad es. g.:

ps h -O etimes 1 2 3

Soluzione 5:

Penso che tu possa modificare alcune di quelle risposte precedenti per adattarle alle tue esigenze. Vale a dire:

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

Oppure

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

Penso che la seconda possa adattarsi meglio alle tue esigenze. La versione find finirebbe per bombardare altri processi di quell'utente


--Christopher Karel


Linux
  1. Cosa sono i processi zombi e come trovare e uccidere i processi zombi?

  2. Come eliminare i processi in esecuzione in Linux

  3. Come rimuovere file più vecchi di N giorni usando tmpreaper in Linux

  4. Come uccidere tutti i processi con un determinato nome parziale?

  5. Come uccidere tutti i processi in background in zsh?

Come uccidere i processi zombie in Ubuntu 20.04 LTS

Come eliminare file più vecchi di giorni specificati in Linux

Come usare il comando PS

Come uccidere i processi zombi in Ubuntu

Come uccidere i processi in Linux usando kill, killall e pkill

Come terminare i processi MySQL in phpMyAdmin