dmesg 구문 분석을 기반으로 한 자동 rmmod/modprobe

dmesg 구문 분석을 기반으로 한 자동 rmmod/modprobe

저는 MacBooPro10,1 Debian 안정(기본 설치 rsyslogd) 시스템을 사용하고 있으며 트랙패드는 결국 다음과 같이 때때로 오작동합니다(포인터 작동이 중지됨).

$ dmesg
[...]
[1910159.662967] bcm5974: bad trackpad package, length: 8

해결책은 간단합니다.

$ sudo rmmod bcm5974 && sudo modprobe bcm5974

하지만 자동으로 수행되는 것이 더 좋습니다.

dmesg출력을 구문 분석하고 명령(전원)을 트리거하는 방법은 무엇입니까 sudo?

답변1

프로그램이 해당 행과 일치하면 rsyslogd실행을 요청할 수 있습니다. /etc/rsyslog.d/my.conf예를 들어 다음 줄을 포함하는 파일을 만듭니다.

:msg, contains, "bad trackpad package" ^/bin/mytrackpadreset

/bin/mytrackpadreset이는 메시지가 표시될 때 스크립트를 실행하여 전체 메시지를 단일 문자열 인수로 전달합니다. 데몬은 루트로 실행되므로 필요한 rmmod bcm5974 && modprobe bcm5974명령을 스크립트에 간단히 넣을 수 있지만 먼저 적절한 PATH를 설정해야 할 수도 있습니다.

예전에는 rsyslogd스크립트가 끝날 때까지 기다렸다가 계속하면 된다고 생각했는데, 이제는 그렇지 않은 것 같습니다. 이 메시지가 한 번에 여러 번 표시될 것으로 예상되는 경우 이를 여러 번 병렬로 실행할 수 있도록 스크립트에서 추가 작업을 수행해야 할 수도 있습니다.

이 이전 형식( ^program)은오프로그모듈은 한 번 시작하고 지속적으로 실행하여 표준 입력으로 메시지를 전달하려는 프로그램에 더 유용합니다.

답변2

약간의 -ing을 사용하면 grep출력과 동일한 정보를 찾을 수 있습니다.dmesg/var/log/messages

리소스를 낭비하지 않고(그리고 "1분"도 없이) 이 파일을 보는 문제가 남아 있습니다. cron이는 매우 우아하지 않습니다.

관련 정보