Varian dari jawaban @ l0b0:
dmesg --follow | awk '
/BUG: workqueue lockup/ { system ("killall someprocessname") ; rem="done at each occurrence. You could add further things, like print to a logfile, etc.,"
}'
Ini mari kita lakukan perulangan, yang memiliki beberapa keunggulan:
- itu akan bekerja sampai proses itu mati.
- Itu juga tidak memanggil lebih dari 1
killall
per kejadian pencarian "BUG: workqueue lockup", yang meningkatkan jawaban yang lain.
Untuk menguji: Anda bisa memasukkan ini ke dalam skrip bernama thescript
, dan lakukan nohup thescript &
, sehingga thescript
akan tetap berjalan bahkan setelah Anda keluar dari sesi Anda.
Setelah Anda puas itu berhasil, bunuh saja, dan kemudian Anda dapat (alih-alih menjalankannya setiap kali dengan shell nohup
) mengubahnya menjadi daemon script
yang kemudian dapat Anda mulai di runlevel Anda saat ini.
yaitu: menggunakan skrip lain sebagai model (Anda harus memiliki setidaknya bagian awal, berhenti dan status), Anda dapat memodifikasi dengan thescript
tepat dan kemudian menempatkannya di dalam /etc/rc.d/init.d
, dan memiliki symlink untuk itu bernama di Sxxthescript
bawah yang sesuai /etc/rc.d/rcN
, N
menjadi nomor untuk runlevel normal Anda (lihat baris atas who -a
untuk mengetahui level run saat ini). Dan memiliki Kxxthescript
symlink yang tepat juga, di setiap (atau hampir setiap) runlevel, sehingga skrip terbunuh secara tepat ketika berpindah runlevel.
Atau lakukan "hal-hal yang sesuai" agar dijalankan / dihentikan melalui systemd atau sistem setara yang digunakan distribusi Anda.