Beberapa masalah:
- Anda menjalankan ini dalam loop sibuk, yang akan menghabiskan sumber daya sebanyak mungkin. Ini adalah salah satu contoh di mana
sleep
ing mungkin bisa dibenarkan. -
Namun, versi terbaru dari
dmesg
memiliki bendera untuk mengikuti keluaran, sehingga Anda dapat menulis ulang semuanya sebagai (belum diuji)while true do dmesg --follow | tail --follow --lines=0 | grep --quiet 'BUG: workqueue lockup' killall someprocessname done
- Kode harus diindentasi agar dapat dibaca.
- Benar-benar aneh, tapi
[
sama dengantest
- lihathelp [
.
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 awk lakukan perulangan, yang memiliki beberapa keuntungan:
- itu akan bekerja sampai proses itu mati.
- Itu juga tidak memanggil lebih dari 1
killall
per kemunculan string penelusuran "BUG:workqueue lockup", yang menyempurnakan jawaban lainnya.
Untuk menguji:Anda dapat memasukkan ini ke dalam skrip bernama thescript
, dan lakukan nohup thescript &
, sehingga thescript
akan terus berjalan bahkan setelah Anda keluar dari sesi.
Setelah Anda puas itu berfungsi, matikan, dan kemudian Anda bisa (alih-alih menjalankannya setiap kali di shell dengan 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 mulai, berhenti, dan status), Anda dapat memodifikasi thescript
dengan tepat lalu tempatkan di dalam /etc/rc.d/init.d
, dan memiliki symlink untuk itu bernama Sxxthescript
di bawah /etc/rc.d/rcN
yang sesuai , N
menjadi angka untuk runlevel normal Anda (lihat baris teratas who -a
untuk mengetahui run-level saat ini). Dan memiliki Kxxthescript
yang sesuai symlink juga, di setiap (atau hampir setiap) runlevel, sehingga skrip dimatikan dengan tepat saat beralih runlevel.
Atau lakukan "hal yang sesuai" untuk menjalankan/menghentikannya melalui systemd atau sistem setara apa pun yang digunakan distribusi Anda.