GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu zabít procesy starší než t?

Řešení 1:

GNU Killall může zabít procesy starší než daný věk pomocí jejich názvu procesu.

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

Řešení 2:

Díky Christopherově odpovědi jsem to dokázal přizpůsobit následujícímu:

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

-mmin byl příkaz find, který jsem postrádal.

Řešení 3:

find nefunguje vždy, ne každý systém má k dispozici etimes a může to být můj regex newb status, ale nemyslím si, že potřebujete něco víc než toto:

ps -eo pid,etimes,comm,user,tty | awk '{if ($4 ~ /builder/ && $5 ~ /pts/ && $2>600) print $1}'
  • uveďte všechny procesy a uveďte sloupce PID,ELAPSED(etimes =sekund), COMMAND, USER, TT (díky @ahoffman)
  • pomocí awk vytiskněte PID, kde 4. sloupec ($4, USER) obsahuje text 'builder' a 5. sloupec ($5, TT) obsahuje text 'pts' a sloupec ELAPSED má hodnotu větší než 600 sekund (díky @ amtd)

pak to můžete zabíjet nebo cokoli potřebujete.

Řešení 4:

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

Pokud chcete, můžete nakrmit ps se seznamem PID k vyhledání, např. např.:

ps h -O etimes 1 2 3

Řešení 5:

Myslím, že některé z těchto předchozích odpovědí můžete upravit tak, aby vyhovovaly vašim potřebám. Jmenovitě:

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

Nebo

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

Myslím, že to druhé může nejlépe vyhovovat vašim potřebám. Verze find by tímto uživatelem zničila další procesy


--Christopher Karel


Linux
  1. Jak zabít běžící procesy v Linuxu

  2. Jak zabít všechny procesy s daným částečným názvem?

  3. Jak zabít všechny procesy vrácené pgrep

  1. Co jsou zombie procesy a jak najít a zabít zombie procesy?

  2. Jak odstranit soubory starší než N dní pomocí tmpreaper v Linuxu

  3. Jak zabít všechny procesy na pozadí v zsh?

  1. Jak zabít proces v Linuxu? Příkazy k ukončení

  2. Jak zabít všechny procesy PHP-FPM v jediném příkazovém řádku

  3. Jak mohu zabít všechny procesy uživatele pomocí jejich UID