온도가 임계값을 초과하면 데몬 없이 명령 실행

온도가 임계값을 초과하면 데몬 없이 명령 실행

랩톱이 너무 뜨거워지면 특정 명령을 실행해야 합니다(예를 들어 랩톱이 심하게 종료되어 하드 디스크가 손상되는 것을 방지하기 위해 Firefox 또는 Virtualbox에 STOP 신호를 보냅니다).

주기적으로 온도를 확인하면서 무한 반복되는 프로그램을 쉽게 작성할 수 있습니다.이것질문의 답변은 이 접근 방식을 사용합니다.

그러나 나는 내 자신의 데몬을 실행하는 것을 피하고 대신 내 프로그램을 기존 프로그램에 연결하고 싶습니다. 예를 들어, 내 syslog에서 다음을 볼 수 있습니다.

5월 5일 02:52:27 myhostname 커널: [ 9141.022262] intel ips 0000:00:1f.6: MCP 제한 초과: 평균 온도 9276, 제한 9000

따라서 내 컴퓨터에는 이미 온도를 확인하는 코드가 있는데, 이는 조건에 따라 일부 작업을 실행합니다(예: 온도가 9000을 초과할 때 로그 경고 메시지). 또 다른 예는 동일한 온도에 따라 팬 속도가 빨라지는 것입니다.

내 컴퓨터의 기존 코드에 내 프로그램을 어떻게 첨부할 수 있나요? 팬 드라이버 속도 변경과 커널 온도 경고 메시지가 동일한 코드에서 발생합니까? 이것을 어떻게 알 수 있나요?

답변1

그런 종류의 일을 모니터하는 일종의 데몬을 실행해야 할 것입니다. 하드웨어 센서는 비활성 데이터 소스일 뿐이며 일반적으로 실제로 자체적으로 작업을 수행할 수 없습니다.

사용자 정의 코드를 직접 작성하고 싶다면 다음을 설치해 보세요.collectd-sensors패키지(배포판에서는 다른 이름으로 부를 수 있음) 온도 기록을 유지합니다. 온도 데이터를 추적하도록 구성한 후에는 collectd다음을 수행할 수 있어야 합니다.Collectd 알림 설정그런 행사를 위해서요.

답변2

내 프로그램을 이 코드에 어떻게 첨부할 수 있나요?

특정 출력은 커널에서 나온 것이므로~할 것 같다이를 위해 커널 모듈을 작성할 수 있거나 정보에 전역적으로 액세스할 수 없는 경우 기존 정보에 대한 패치를 작성할 수 있습니다.

이미 실행 중인 WRT 데몬을 활용할 수 있습니다.cron1분마다 확인하세요.

분보다 더 미세한 단위를 원한다면 직접 루프를 작성하거나 이미 이를 수행하는 도구를 찾아야 합니다. 일부 GUI 시스템 모니터에서는 임의의 프로세스를 실행할 수 있는 경보를 구성할 수 있습니다 gkrellm. 아닙니다. 인터넷 검색만으로는 알기 어렵습니다 conky.)

답변3

DBUS 또는 ACPI 이벤트는 이러한 "이벤트"를 포착하고 원하는 작업을 수행하는 명령을 실행하는 장소인 것 같습니다. dbus-monitor이러한 이벤트를 "잡은" 다음 스크립트를 실행하도록 조정할 수 있는 방법을 보여 드리겠습니다 .

이 U&L Q&A에 대한 내 답변을 살펴보십시오.libnotify를 사용하여 스크립트를 실행할 수 있습니까?

답변4

이를 위해서는 Firefox/Virtualbox의 트리거 온도를 로그에 메시지를 트리거하는 온도와 동일하게 설정하고 syslog-ng를 실행할 의지도 있어야 합니다.

syslog-ng는 특정 프로그램이나 특정 내용과 함께 로그로 전송되는 메시지에 의해 트리거되는 임의의 코드를 실행하도록 구성할 수 있습니다.

syslog-ng.conf에 새 대상을 추가합니다.

destination d_high_temp { program("/path/to/OPs/temperature_script"); };

그리고 새로운 필터도 함께

filter f_high_temp { match("MCP limit exceeded" value("MESSAGE")); };

그리고 마지막으로

log { source(src); filter(f_high_temp); destination(d_high_temp); };

현재보다 더 이상 데몬을 실행하지 않지만 원하는 프로그램은 무엇이든 종료할 수 있습니다.

관련 정보