Saya memiliki beberapa bot, yang dijalankan oleh Penjadwal Sistem pada interval waktu tertentu. Tetapi terkadang karena beberapa kesalahan logis saya harus menghentikan bot ini secara manual. Bagaimana saya bisa menemukan proses ini dijalankan oleh penjadwal dan mematikannya?
Jawaban yang Diterima:
Anda dapat mematikan proses berdasarkan nama. Misalnya, di Linux, *BSD dan Solaris, pkill myprogram
membunuh semua proses yang namanya mengandung myprogram
(gunakan pkill '^myprogram$'
untuk pencocokan tepat). Jika Anda menjalankannya sebagai pengguna non-root, hanya proses pengguna tersebut yang akan dihentikan, dan ada opsi lebih lanjut untuk mengontrol pencocokan (lihat manual di sistem Anda untuk detailnya).
Jika Anda ingin secara khusus menargetkan proses yang dimulai oleh penjadwal, dan Anda mematikan proses secara manual, Anda dapat menjalankan ps f
(Khusus Linux) atau pstree
(Khusus Linux) atau ptree
untuk menampilkan proses di pohon, dan melihat proses mana yang dimulai oleh cron.
Jika Anda ingin dapat mematikan proses ini secara otomatis dalam metode buatan sendiri, buat mereka menyimpan ID prosesnya dalam sebuah file. Jenis file ini disebut pidfile ketika digunakan untuk hanya memiliki satu contoh proses yang berjalan (yang mungkin atau mungkin bukan sesuatu yang Anda inginkan). Jika Anda menginginkan beberapa instance, simpan PID dalam file terpisah di direktori umum; inilah cuplikan shell yang melakukan ini:
pid_dir=/var/run/myprogram # must have been created e.g. at boot time
myprogram &
pid_file=$pid_dir/$!.pid
touch "$pid_file"
wait
rm "$pid_file"
Solusi yang lebih baik, jika Anda memiliki kriteria sulit untuk mendeteksi proses yang tidak terkendali, adalah dengan menggunakan program pemantauan umum, atau dalam kasus sederhana hanya membatasi berapa lama proses tersebut diizinkan untuk berjalan. Anda mungkin menemukan tautan ini berguna:
- “Monit dapat memulai proses jika tidak berjalan, memulai ulang proses jika tidak merespons, dan menghentikan proses jika menggunakan terlalu banyak sumber daya.”
- Saya butuh bantuan dengan cronjob untuk mengawasi proses yang kabur dan membunuhnya
- Bagaimana cara membatasi penggunaan sumber daya untuk menghemat CPU+RAM untuk proses tertentu?
- Apakah ada cara untuk membatasi jumlah memori yang dapat digunakan oleh proses tertentu di Unix?