GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie beende ich Prozesse, die älter als t sind?

Lösung 1:

GNU Killall kann Prozesse, die älter als ein bestimmtes Alter sind, unter Verwendung ihres Prozessnamens beenden.

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

Lösung 2:

Dank Christophers Antwort konnte ich es wie folgt anpassen:

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

-mmin war der Suchbefehl, den ich vermisst habe.

Lösung 3:

find funktioniert nicht immer, nicht jedes System hat etimes verfügbar, und es könnte mein regex newb status sein, aber ich glaube nicht, dass Sie mehr als das hier brauchen:

ps -eo pid,etimes,comm,user,tty | awk '{if ($4 ~ /builder/ && $5 ~ /pts/ && $2>600) print $1}'
  • alle Prozesse auflisten und die Spalten PID, ELAPSED(etimes =Sekunden), COMMAND, USER, TT angeben (danke @ahoffman)
  • mit awk die PID ausgeben, wobei die 4. Spalte ($4, USER) den Text 'builder' enthält und die 5. Spalte ($5, TT) den Text 'pts' enthält und die ELAPSED-Spalte einen Wert größer als 600 Sekunden hat (danke @ amtd)

Sie können das dann leiten, um zu töten oder was auch immer Sie brauchen.

Lösung 4:

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

Wenn Sie möchten, können Sie ps füttern mit Liste von PIDs zum Nachschlagen, z. B.:

ps h -O etimes 1 2 3

Lösung 5:

Ich denke, Sie können einige dieser vorherigen Antworten an Ihre Bedürfnisse anpassen. Nämlich:

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

Oder

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

Ich denke, der zweite passt am besten zu Ihren Bedürfnissen. Die Find-Version würde andere Prozesse dieses Benutzers zerstören


--Christoph Karel


Linux
  1. Was sind Zombie-Prozesse und wie findet und tötet man Zombie-Prozesse?

  2. So beenden Sie laufende Prozesse in Linux

  3. Wie kann man alle Prozesse mit einem bestimmten Teilnamen beenden?

  4. Wie beendet man alle Hintergrundprozesse in zsh?

  5. So beenden Sie alle PHP-FPM-Prozesse in einer einzigen Befehlszeile

So töten Sie Zombie-Prozesse in Ubuntu 20.04 LTS

So löschen Sie Dateien, die älter als die angegebenen Tage in Linux sind

So verwenden Sie den PS-Befehl

So töten Sie Zombie-Prozesse in Ubuntu

So beenden Sie Prozesse in Linux mit kill, killall und pkill

So beenden Sie MySQL-Prozesse in phpMyAdmin