etherwake
bash 스크립트를 통해 마스터가 시작되면 매직 패킷을 보내는 명령을 사용하여 슬레이브를 원격으로 깨우려고 합니다 . 두 운영 체제 모두 Debian 8입니다. 전체 코드는 다음과 같습니다.
/etc/init.d/etherwake
#!/bin/sh
#/etc/init.d/etherwake
### BEGIN INIT INFO
# Provides: etherwake
# Required-Start: $all
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start etherwake at boot time
# Description: Enable service provided by etherwake.
### END INIT INFO
ETHERWAKE=/usr/sbin/etherwake
case "$1" in
start)
echo "Booting slaves through etherwake..."
$ETHERWAKE <MAC Address>
echo "Finished booting all slaves."
;;
stop)
echo "Stop not implemented. Doing nothing"
;;
restart|force-reload)
$0 stop
sleep 10
$0 start
;;
*)
echo "Usage: /etc/init.d/etherwake {start}"
exit 1
;;
esac
exit 0
스크립트를 작성한 후 다음을 수행했습니다.
chmod 755 /etc/init.d/etherwake
update-rc.d etherwake defaults
- 시스템을 다시 시작하여
shutdown -r now
나는 또한 /etc/rc.local
그것을 세 가지 다른 방법으로 사용해 보았습니다.
/etc/rc.local
#!/bin/sh -e
#
# rc.local
/etc/init.d/etherwake
etherwake <MAC Address>
/usr/sbin/etherwake <MAC Address>
exit 0
전혀 행운이 없습니다. 루트로 실행 /etc/rc.local
하거나 수동으로 실행하면 /etc/init.d/etherwake
모든 것이 잘 실행됩니다 . 나는 이것이 권한 문제일지도 모른다고 생각했지만 내가 읽은 내용에 따르면 /etc/init.d
모든 스크립트는 기본적으로 루트로 실행됩니다. 내가 뭘 잘못했나요?
미리 감사드립니다.
편집하다:
나는 Debian 8이 sysvinit 대신 systemd를 사용한다는 것을 알고 있습니다. 모든 것을 설정한 후 다음 systemctl -l status etherwake.service
을 제공하십시오.
● etherwake.service - Etherwake magic packet service
Loaded: loaded (/etc/systemd/system/etherwake.service; enabled)
Active: inactive (dead) since Fri 2016-09-30 16:30:56 BRT; 1min 33s ago
Process: 824 ExecStart=/etc/init.d/etherwake start (code=exited, status=0/SUCCESS)
Main PID: 824 (code=exited, status=0/SUCCESS)
Sep 30 16:30:56 hostname etherwake[824]: Booting slaves through etherwake...
Sep 30 16:30:56 hostname etherwake[824]: Finished booting all slaves.
그리고 /etc/systemd/system/etherwake.service
는:
[Unit]
Description=Etherwake magic packet service
Wants=network-online.target
After=syslog.service network.target network-online.target
[Service]
ExecStart=/etc/init.d/etherwake start
[Install]
WantedBy=default.target
또 하나 느낀 점은 systemctl restart etherwake
달리기에는 매력이 있다는 점이다.
답변1
문제는 이것이 update-rc.d etherwake defaults
작동하지 않을 수 있다는 것입니다. 다음을 실행 하여 서비스를 활성화해 보십시오 systemctl
.
systemctl enable etherwake