나는 Raspberry Pi UPS 코드 작업을 해왔습니다.즉, systemd(개인 선호도 및 친숙도) 대신 sysv init를 사용하십시오. 나는 권한 있는 스크립트(아마도 /etc/rc.local의 일부이거나 /etc/rc.local에서 실행)가 init에게 거기에 있음을 알릴 수 있는 방법을 조사하고 있습니다.전원 공급 시스템의 전자 부족. 매뉴얼 페이지에는 신호를 보내기 위해 init(8)
"before"에 단일 대문자("F'ailing", "O'k" 또는 엄밀히 말하면 "L"ow)를 쓰는 방법이 나와 있지만 /etc/powerstatus
지금은 "then" 이 있습니다. 그것은 말한다 :/var/run/powerstatus
init
SIGPWR
and 의 사용은 권장되지 않습니다
SIGPWR
./etc/powerstatus
init와 상호 작용하려는 사람들은/run/initctl
제어 채널을 사용해야 합니다. 이에 대한 자세한 문서는 sysvinit 패키지의 소스 코드를 참조하세요.
나는 본 적이원천gnu.org에서 호스팅하지만 이것을 사용하는 예제를 본 적이 없습니다.소설사물을 알려주는 인터페이스 init
.
흥미롭게도 Hydra는 systemd
인터페이스를 복사하려고 시도했습니다. 존재하지 않는 것과 유사한 것이 있다고 생각하지만 실제로 그것을 사용하는 것을 찾지 못했습니다. 그런 게 있나요? 예를 들어 일부 UPS 관련 소프트웨어가 가능했으면 좋겠지 nut
만 그럴 수 없을 것 같습니다...
이 질문에는 "Raspberry Pi"가 언급되어 있지만 해당 플랫폼이나 해당 플랫폼에서 실행되는 Raspbian과 같은 배포판에만 국한되지 않습니다.
다음 질문과 답변은 관련 세부 정보를 입력하는 데 도움이 될 수 있습니다.
편집: 위의 Q&A 중 적어도 하나는 왜 어떤 사람들은 /dev/initctl을 가지고 있고 다른 사람들은 /run/initctl을 가지고 있는지 제안합니다. 이것은 제가 알지 못했던 것입니다(데비안의 문제입니다).
답변1
나는 그것을 사용한다고 믿습니다 reboot
. strace
다음 중 하나를 수행하십시오 reboot
.
# strace -s 128 -f reboot
하단 어딘가에 다음이 표시됩니다.
open("/dev/initctl", O_WRONLY) = 3
write(3, "i\31\t\3\6\0\0\0\0\0\0\0\0\0\0\0INIT_HALT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 384) = 384
close(3)
...
open("/dev/initctl", O_WRONLY) = 3
write(3, "i\31\t\3\1\0\0\0006\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 384) = 384
close(3)
답변2
Debian에서 다음 패키지는 /run/initctl을 사용합니다: systemd, libvirt, sysvinit, refpolicy, gradm2. (에서https://codesearch.debian.net/).
나는 이것이 init에게 런레벨을 변경하라고 지시하는 일반적인 방법이라고 생각합니다.