Eine Variante der Antwort von @ 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.,"
}'
Dies ist die Schleife, die einige Vorteile hat:
- es wird funktionieren, bis dieser Prozess stirbt.
- Es wird auch nicht mehr als 1
killall
pro Auftreten des Suchstrings "BUG: Workqueue Lockup" aufgerufen, was die andere Antwort verbessert.
So testen Sie: Sie können dies in ein Skript mit dem Namen " thescript
and" einfügen nohup thescript &
, damit thescript
es auch nach dem Beenden der Sitzung weiter ausgeführt wird.
Sobald Sie zufrieden sind, funktioniert es, töten Sie es und dann können Sie es (anstatt es jedes Mal in einer Shell mit auszuführen nohup
) in ein verwandeln, daemon script
das Sie dann in Ihrem aktuellen Runlevel gestartet haben können.
dh: unter Verwendung eines anderen Skript als Modell (Sie müssen mindestens die Start-, Stop- und Statusabschnitte haben), können Sie ändern , in thescript
geeigneter Weise und legen Sie es dann innerhalb /etc/rc.d/init.d
und haben einen Symlink zu ihm benannt Sxxthescript
unter der entsprechenden (n) /etc/rc.d/rcN
, N
wobei ein Nummer für Ihren normalen Runlevel (siehe die oberen Zeilen von who -a
, um den aktuellen Runlevel zu erfahren). Und haben Sie auch die entsprechenden Kxxthescript
Symlinks in jedem (oder fast jedem) Runlevel, so dass das Skript beim Wechseln des Runlevels angemessen beendet wird.
Oder tun Sie "die entsprechenden Dinge", damit es über systemd oder ein gleichwertiges System, das Ihre Distribution verwendet, ausgeführt / gestoppt wird.