Menjalankan Linux Saya memiliki beberapa proses yang cenderung macet sesekali (server game), yang akhirnya menggunakan cpu 100%.
Saya sedang mencari program atau skrip untuk memeriksa penggunaan cpu dari daftar proses dengan nama dan jika mereka berada di 100% untuk lebih dari waktu X, katakan 30 detik, bunuh mereka. Saya mencoba ps-watcher tetapi tidak dapat menentukan bagaimana mencapai ini.
Hanya mematikan proses pada penggunaan 100% tidak akan berhasil karena akan mencapai itu untuk periode singkat selama operasi normal.
Saya juga menemukan skrip ini yang tampaknya melakukan apa yang saya inginkan, namun ini terbatas pada satu proses: tautan
Setiap bantuan sangat dihargai!
Jawaban:
Coba monit .
Anda dapat menggunakan konfigurasi seperti ini, untuk menyelesaikan tugas Anda:
Rincian tentang konfigurasi ini dapat ditemukan dalam dokumentasi monit .
sumber
start program
danstop program
hanya untuk kasus ketikamonit
perlu memulai kembali proses Anda. Anda masih dapat memulainya dengan skrip init normal Anda.monit
juga dapat memeriksa apakah program sudah berjalan (mis. dengan file PID atau nama prosesnya).Ini adalah apa yang saya cari, dan telah menggunakannya untuk beberapa waktu sekarang (sedikit diubah). Akhir-akhir ini, saya telah memasukkan bug dalam pekerjaan saya tetapi harus tetap menjalankan aplikasi (server game).
Saya telah mengutip bagian di mana PID teratas dibunuh, karena membunuh PID yang salah.
Inilah draf skrip Anda yang terbaru, sejauh ini, ia menemukan kelebihan yang paling banyak dan secara efektif membunuhnya (juga mengirimi saya email info kapan pun ia melakukan sesuatu);
Skrip kecil ini sangat berguna, jika Anda tidak suka mematikan proses apa pun, email saja akan membantu Anda mendapatkan informasi.
sumber
TOPPROCESS
tidak aktif. Itu tidak akan mengurutkan berdasarkan nilai aktual, melainkan akan memesan entri secara alfanumerik (misalnya 6% akan didahulukan lebih dari 12%). Alternatif yang lebih baik mungkin adalah perintah berikut:top -b -n 1 | sed 1,6d | sed -n 2p
Di bawah ini adalah contoh skrip BASH yang dapat membantu Anda mendapatkan beberapa petunjuk untuk kebutuhan Anda sendiri.
Harap perhatikan bahwa nilai $ CPU_THRESHOLD Anda harus bergantung pada jumlah (CPU) core yang Anda miliki di sistem Anda. Penjelasan terperinci tentang topik ini dapat ditemukan di http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages .
Anda dapat memanggil skrip Anda dari dalam / etc / inittab atau cronjob untuk setiap menit yang Anda inginkan. Harap perhatikan juga bahwa skrip contoh akan mematikan proses paling atas jika $ CPU_LOAD lebih besar dari $ CPU_THRESHOLD.
sumber