Вариант ответа @ 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.,"
}'
Это давайте awk сделаем цикл, который имеет некоторые преимущества:
- это будет работать, пока этот процесс не умрет.
- Он также не вызывает более 1 в
killall
каждом случае строки поиска «BUG: блокировка рабочей очереди», что улучшает другой ответ.
Для проверки: Вы можете поместить это в скрипт с именем thescript
и сделать nohup thescript &
так, чтобы thescript
он продолжал работать даже после выхода из сеанса.
Как только вы убедитесь, что он работает, убейте его, и затем вы можете (вместо того, чтобы запускать его каждый раз в оболочке с nohup
) преобразовать его в тот, daemon script
который вы могли бы запустить на текущем уровне запуска.
а именно: с помощью другого сценария в качестве модели (вы должны иметь , по крайней мере , секции запуска, остановки и состояния), вы можете изменить thescript
соответствующим образом, а затем поместить его в пределах /etc/rc.d/init.d
, и есть символическая ссылка на него названа в Sxxthescript
рамках соответствующего (ов) /etc/rc.d/rcN
, N
будучи номер вашего нормального уровня выполнения (см. верхние строки, who -a
чтобы узнать текущий уровень выполнения). И иметь соответствующие Kxxthescript
символические ссылки также на каждом (или почти на каждом) уровне выполнения, чтобы скрипт соответствующим образом уничтожался при переключении уровней выполнения.
Или выполните «соответствующие действия», чтобы запустить или остановить его через systemd или любую другую эквивалентную систему, которую использует ваш дистрибутив.