Una variante de la respuesta de @ 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.,"
}'
Vamos a hacer el bucle, que tiene algunas ventajas:
- funcionará hasta que ese proceso muera.
- Tampoco llama más de 1
killall
por aparición de la cadena de búsqueda "ERROR: bloqueo de la cola de trabajo", que mejora con respecto a la otra respuesta.
Para probar: puede poner esto en un script llamado thescript
y hacer nohup thescript &
, para que thescript
siga ejecutándose incluso después de salir de la sesión.
Una vez que esté satisfecho, funciona, elimínelo y luego puede (en lugar de ejecutarlo cada vez en un shell con nohup
) transformarlo en uno daemon script
que luego pueda haber comenzado en su nivel de ejecución actual.
es decir: usando otro script como modelo (debe tener al menos las secciones de inicio, detención y estado), puede modificarlo thescript
apropiadamente y luego colocarlo dentro /etc/rc.d/init.d
, y tener un enlace simbólico con el nombre Sxxthescript
debajo de los apropiados /etc/rc.d/rcN
, N
siendo número para su nivel de ejecución normal (consulte las líneas superiores who -a
para conocer el nivel de ejecución actual). Y tenga también los Kxxthescript
enlaces simbólicos apropiados , en cada (o casi todos) niveles de ejecución, de modo que el script se elimine adecuadamente al cambiar los niveles de ejecución.
O haga "lo apropiado" para que se ejecute / detenga a través de systemd o cualquier sistema equivalente que utilice su distribución.