Saya mencari cara untuk membunuh semua proses dengan nama yang diberikan yang telah berjalan selama lebih dari X jumlah waktu. Saya menelurkan banyak contoh dari executable khusus ini, dan kadang-kadang masuk ke kondisi buruk dan berjalan selamanya, mengambil banyak cpu.
Saya sudah menggunakan monit, tetapi saya tidak tahu cara memeriksa proses tanpa file pid. Aturannya akan seperti ini:
kill all processes named xxxx that have a running time greater than 2 minutes
Bagaimana Anda mengekspresikan ini dalam monit?
monitoring
monit
Parand
sumber
sumber
Jawaban:
Dalam monit, Anda dapat menggunakan string yang cocok untuk proses yang tidak memiliki PID. Menggunakan contoh proses bernama "myprocessname",
Mungkin jika Anda memeriksa untuk melihat apakah beban CPU berada pada level tertentu untuk 10 siklus pemantauan (masing-masing 30 detik), lalu hidupkan ulang atau matikan, itu bisa menjadi pilihan. Atau Anda dapat menggunakan pengujian cap waktu monit pada file yang terkait dengan proses.
sumber
Tidak ada alat yang siap digunakan dengan fungsi itu. Anggap Anda ingin membunuh skrip php-cgi, yang berjalan lebih lama dari menit. Melakukan hal ini:
pgrep php-cgi | xargs ps -o pid,time | perl -ne 'print "$1 " if /^\s*([0-9]+) ([0-9]+:[0-9]+:[0-9]+)/ && $2 gt "00:01:00"' | xargs kill
pgrep
akan memilih proses berdasarkan nama,ps -o pid,time
mencetak runtime untuk setiap pid, dan kemudian menganalisis baris, mengekstrak waktu dari itu, dan mencetak pid jika waktu membandingkan dengan yang ditetapkan. hasil disahkan untuk membunuh.sumber
Saya memecahkan masalah ini dengan ps-watcher dan menulis tentang hal itu di linux.com beberapa tahun yang lalu. ps-watcher memungkinkan Anda untuk memonitor proses dan membunuh mereka berdasarkan akumulasi run time. Berikut konfigurasi ps-watcher yang relevan, dengan anggapan proses Anda bernama 'foo':
Kuncinya adalah garis
yang mengatakan 'jika akumulasi waktu proses> 1 jam DAN aku bukan proses induk, restart saya.
Jadi, saya menyadari bahwa jawaban tidak menggunakan monit, tetapi berhasil. ps-watcher ringan dan mudah diatur, jadi tidak ada salahnya menjalankannya selain pengaturan monit Anda.
sumber
Monit dapat melakukan ini pada versi 5.4:
Lihat: file PERUBAHAN proyek
sumber
Anda dapat mengerjakan ini menjadi monit sebagai pernyataan eksekutif.
sumber