GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mematikan proses yang lebih lama dari t?

Solusi 1:

GNU Killall dapat mematikan proses yang lebih tua dari usia tertentu, menggunakan nama prosesnya.

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

Solusi 2:

Berkat jawaban Christopher, saya dapat menyesuaikannya dengan yang berikut:

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

-mmin adalah perintah find yang saya lewatkan.

Solusi 3:

find tidak selalu berfungsi, tidak setiap sistem memiliki waktu yang tersedia, dan ini mungkin status regex newb saya, tetapi menurut saya Anda tidak memerlukan yang lebih dari ini:

ps -eo pid,etimes,comm,user,tty | awk '{if ($4 ~ /builder/ && $5 ~ /pts/ && $2>600) print $1}'
  • daftarkan semua proses dan berikan kolom PID,ELAPSED(etimes =second), COMMAND, USER, TT (thanks @ahoffman)
  • dengan awk cetak PID di mana kolom ke-4 ($4, USER) berisi teks 'builder', dan kolom ke-5 ($5, TT) berisi teks 'pts' dan kolom ELAPSED memiliki nilai lebih besar dari 600 detik (terima kasih @ amtd)

Anda kemudian dapat menyalurkannya untuk membunuh atau apa pun kebutuhan Anda.

Solusi 4:

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

Jika mau, Anda dapat memberi makan ps dengan daftar PID untuk dicari di dalamnya, misalnya. g.:

ps h -O etimes 1 2 3

Solusi 5:

Saya pikir Anda dapat memodifikasi beberapa jawaban sebelumnya agar sesuai dengan kebutuhan Anda. Yaitu:

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

Atau

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

Saya pikir yang kedua mungkin paling sesuai dengan kebutuhan Anda. Versi find akan menghentikan proses lain oleh pengguna tersebut


--Christopher Karel


Linux
  1. Bagaimana cara mematikan semua proses dengan nama parsial yang diberikan?

  2. Cara mematikan semua proses yang dikembalikan oleh pgrep

  3. Bagaimana cara mematikan semua proses pengguna menggunakan UID mereka

  1. Apa Proses Zombie Dan Bagaimana Menemukan &Membunuh Proses Zombie?

  2. Cara Membunuh Proses yang Berjalan di Linux

  3. Cara Menghapus File Lebih Lama dari N hari menggunakan tmreaper di Linux

  1. Bagaimana Cara Membunuh Proses di Linux? Perintah untuk Mengakhiri

  2. Bagaimana cara mematikan semua proses latar belakang di zsh?

  3. Cara mematikan semua proses PHP-FPM dalam satu baris perintah