키보드나 마우스를 통해 시스템을 깨우고 싶습니다. 이는 다음을 통해 수행할 수 있습니다./proc/acpi/깨우기그리고 간단한
echo DEVNAME > /proc/acpi/wakeup
내 깨우기 파일은 다음과 같습니다
Device S-state Status Sysfs node
---------------------------------------
1. P0P2 S4 *disabled pci:0000:00:01.0
2. P0P3 S4 *disabled
3. P0P1 S4 *disabled pci:0000:00:1e.0
4. UAR1 S4 *disabled pnp:00:0c
5. EUSB S4 *disabled pci:0000:00:1d.7
6. USBE S4 *disabled pci:0000:00:1a.7
7. P0P5 S4 *disabled
8. P0P6 S4 *disabled
9. P0P7 S4 *disabled
10. P0P8 S4 *disabled pci:0000:00:1c.4
11. P0P9 S4 *disabled pci:0000:00:1c.5
12. GBEC S4 *disabled
13. USB0 S4 *disabled pci:0000:00:1d.0
14. USB1 S4 *disabled pci:0000:00:1d.1
15. USB2 S4 *disabled pci:0000:00:1d.2
16. USB3 S4 *disabled
17. USB4 S4 *disabled pci:0000:00:1a.0
18. USB5 S4 *disabled pci:0000:00:1a.1
19. USB6 S4 *disabled pci:0000:00:1a.2
20. P0P4 S4 *disabled pci:0000:00:1c.0
내 질문은 다음과 같습니다내 마우스/키보드에 어떤 (USB) 장치가 속하는지 어떻게 알 수 있나요?나는 실패했다LSSB지금까지는 올바른 스위치를 놓친 것 같습니다.
답변1
grep `ls /dev/input/by-path/*-mouse |\
head -1 |\
cut -d- -f 3` /proc/acpi/wakeup |\
gawk '{print $1}'
그러면 마우스 입력 장치를 찾은 다음 /proc/acpi/wakeup에서 PCI ID를 찾아 이름을 지정합니다. 실제로 이 명령의 출력을 다시 /proc/acpi/wakeup으로 리디렉션하여 장치에서 깨우기를 활성화할 수 있습니다.
답변2
글쎄요, 비록 깨끗해 보이지는 않지만 방법을 찾았습니다. ;)
마지막부터 시작하겠습니다. 이 한 줄짜리 실행을 실행하면 진실을 알 수 있습니다.
grep "USB.*pci" /proc/acpi/wakeup |\
cut -d ':' -f 2- |\
while read aaa; do \
find /dev/.udev \
-name "*$aaa*" \
-print \
-exec grep "$aaa" /proc/acpi/wakeup \; -exec echo \; ;\
done
꽤 좋지 않나요? 작동 방식은 다음과 같습니다.
- 시작은 명확해야 합니다.
grep "USB.*" /proc/acpi/wakeup
목록에서 알려진 sysfs 노드가 있는 USB 장치만 추출합니다. cut -d ':' -f 2-
각 줄의 "pci:" 뒤에는 후행(숫자)만 남겨 둡니다.- 그런 다음 각 엔딩(
aaa=0000:00:1d.2
등)에 대해 다음을 찾아보세요.udev 장치 심볼릭 링크이 문자열을 포함합니다. - 발견된 각 장치 심볼릭 링크에 대해 다음 명령을 찾으십시오.
- udev 심볼릭 링크의 이름을 인쇄합니다.<-- 가장 유용한 부분입니다
- grep을 실행하면
/proc/acpi/wakeup
검색된 장치에 해당하는 라인이 표시되고, - 출력의 명확성을 위해 빈 줄을 추가합니다.
따라서 udev는 장치 심볼릭 링크를 의미 있게 명명하므로 어떤 USB 장치가 키보드, 마우스 등인지 알 수 있습니다.