Ubuntu 15.04(또는 일반적으로 Linux만)에는 노트북의 AC 전원이 제거되고 장치가 배터리 전원으로 전환될 때 발생하는 측정 가능한 이벤트가 있습니까?
나는 이 이벤트를 기다린 다음 화면 밝기 등을 약간 조정하는 작은 프로그램을 작성하고 싶습니다. 몇 가지 해결책이 있다는 것을 알고 있지만 스스로 가르치려고 노력하고 있습니다. 저는 Linux를 처음 접했고 .NET
대부분의 코딩을 Windows 시스템에서 수행합니다.
에서 배터리 상태 정보를 보았지만 /sys/class/power_supply/
, 일종의 타이머에 대한 변경 사항을 파일에서 검색하는 것보다 어댑터가 분리되었는지 확인하는 더 좋은 방법이 있어야 한다고 가정합니다.
Google과 이 포럼에서 검색을 시도했지만 검색어를 올바르게 표현하는 방법을 찾지 못했습니다.
답변1
당신이 찾고 있는 것은 udev
장치 연결(또는 연결 해제)을 포함하여 다양한 시스템 상태의 변화를 감지할 수 있다는 것입니다. 장치가 연결되거나 제거될 때 특정 작업을 수행하도록 udev 스크립트를 작성할 수 있습니다.
솔직히 말해서 Udev는 매우 복잡하므로 원하는 것을 감지하고 있는지 확인하기 위해 매우 기본적인 테스트를 수행해야 합니다.
기본 단계는 다음과 같습니다.
시스템을 모니터링하세요.
sudo udevadm monitor
이는 udev가 "보는" 내용을 알려줍니다.
이 명령을 실행한 후 이를 연결하고 udevadm이 알려주는 내용을 확인하세요. 다시 연결을 해제하세요. udevadm이 알려주는 내용을 확인하세요. 아직 이해가 되지 않을 수도 있지만 이제 udev를 모니터링하는 방법을 알게 되었으며 이는 유용합니다.
프로세스를 중지하고 다음을 수행하십시오.
sudo udevadm info --path=/sys/class/power_supply/ac
또는
sudo udevadm info --path=/sys/class/power_supply/battery
AC 및 배터리 시스템에 대한 정보를 제공합니다. 이와 같이:
P:/devices/플랫폼/sunxi-i2c.0/i2c-0/0-0034/axp20-supplyer.28/power_supply/battery E: DEVPATH=/devices/platform/sunxi-i2c.0/i2c-0/0-0034/axp20-supplyer.28/power_supply/battery E: 전력 용량=100 E: POWER_SUPPLY_CURRENT_NOW=0 E: POWER_SUPPLY_ENERGY_FULL_DESIGN=3200 E: POWER_SUPPLY_HEALTH=좋음 E: POWER_SUPPLY_MODEL_NAME=배터리 E: POWER_SUPPLY_NAME=배터리 E: POWER_SUPPLY_ONLINE=0 E: POWER_SUPPLY_PRESENT=0 E: POWER_SUPPLY_STATUS=가득 참 E: POWER_SUPPLY_TECHNOLOGY=리튬이온 배터리 E: 전원 공급 장치 온도=300 E: 공급 전압_최대 설계=4200000 E: 공급 전압_최소 설계=3300 E: POWER_SUPPLY_VOLTAGE_NOW=0 E: 하위 시스템 = 전원 공급 장치
이 E:
줄은 udev 규칙을 작성하는 데 사용할 수 있는 환경 속성입니다.
기본 udev 규칙 작성(저는 일반적으로 이벤트가 발생할 때 내 드라이브 어딘가에 로그 항목을 생성하는 규칙을 작성합니다. 이렇게 하면 뭔가를 트리거하고 있다는 것을 알 수 있습니다. 그런 다음 돌아가서 스크립트를 유용하게 만듭니다.)
예를 들어:
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_STATUS}=="Charging", RUN+="/path/to/some/script.sh"
아니면 ...을 사용할 수도 있습니다 POWER_SUPPLY_PRESENT=1
. 컴퓨터에 표시되는 값을 기반으로 실험을 해야 합니다.
/etc/udev/rules.d
이 udev 스크립트를 (일반 이름과 같은 것 ) 넣고 80.power.rules
컴퓨터를 다시 시작하십시오. 기술적으로는 udev를 다시 시작할 수 있지만 이것이 신뢰할 수 없는 것으로 나타났습니다.
AC가 연결되면 스크립트가 트리거되는지 확인하세요.
udev 규칙과 해당 규칙이 트리거하는 스크립트를 최적화하세요.
udev에는 더 많은 기능이 있으므로 자세히 알아보세요!