데비안을 실행하는 서비스 시작 문제 [닫기]

데비안을 실행하는 서비스 시작 문제 [닫기]

Debian 기반 배포 Raspian을 사용하여 Raspberry Pi에서 UPNP 렌더러를 서비스로 실행하고 싶습니다. 실제로 모든 것이 잘 작동하지만 한 가지 문제는 부팅 시 적절한 시간에 서비스를 시작할 수 없다는 것입니다. 나에게는 Wi-Fi 연결이 설정되기 전에 너무 일찍 시작되었습니다. 따라서 렌더러는 네트워크에 표시되지 않습니다. 수동으로 서비스를 중지했다가 다시 시작하면 정상적으로 작동합니다.

루트로서 다음 명령을 실행하여 서비스를 생성합니다.

update-rc.d gmediarender defaults

그러나 링크는 S02gmediarender와 같이 생성되고 Wi-Fi 관리자는 S03wicd이므로 gmediarender 등록을 취소한 후 다음을 시도했습니다.

update-rc.d gmediarender defaults 99

그러나 결과는 같습니다.

처음에 내 스크립트는 다음과 같습니다.

#!/bin/sh

### BEGIN INIT INFO
# Provides: gmediarender
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start GMediaRender at boot time
# Description: Start GMediaRender at boot time.
### END INIT INFO

USER=root
HOME=/root
export USER HOME
case "$1" in
    start)
        echo "Starting GMediaRender"
        start-stop-daemon -x /usr/local/bin/gmediarender -c pi:audio -S -- -f "Raspberry" -d
        ;;
    stop)
        echo "Stopping GMediaRender"
        start-stop-daemon -x /usr/local/bin/gmediarender -K
        ;;
    *)
        echo "Usage: /etc/init.d/gmediarender {start|stop}"
        exit 1
        ;;
esac

exit 0

헤더 부분을 제거하려고 시도했지만 도움이 되지 않았습니다. 당신의 도움을 주셔서 감사합니다:-)

$network 종속성을 추가한 후 -n 옵션을 사용하거나 사용하지 않고 update-rc.d 명령을 실행합니다.

pi@raspberrypi ~ $ sudo update-rc.d -n gmediarender defaults 99
update-rc.d: using dependency based boot sequencing
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc0.d/K01gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc1.d/K01gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc2.d/S02gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc3.d/S02gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc4.d/S02gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc5.d/S02gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc6.d/K01gmediarender
insserv: dryrun, not creating .depend.boot, .depend.start, and .depend.stop
pi@raspberrypi ~ $ 

내 rc2.d 디렉토리는 다음과 같습니다. 네트워크 관리자와 wicd가 중복되지 않고 간섭하여 문제를 일으킬 수 있는지 궁금합니다.

pi@raspberrypi /etc/rc2.d $ ll
total 4
lrwxrwxrwx 1 root root  17 oct.  28 23:43 K01lightdm -> ../init.d/lightdm
lrwxrwxrwx 1 root root  20 mars  16 19:20 K06nfs-common -> ../init.d/nfs-common
lrwxrwxrwx 1 root root  17 mars  16 19:20 K06rpcbind -> ../init.d/rpcbind
-rw-r--r-- 1 root root 677 févr.  8 01:26 README
lrwxrwxrwx 1 root root  18 oct.  28 22:56 S01bootlogs -> ../init.d/bootlogs
lrwxrwxrwx 1 root root  17 oct.  28 23:27 S01ifplugd -> ../init.d/ifplugd
lrwxrwxrwx 1 root root  14 oct.  28 22:56 S01motd -> ../init.d/motd
lrwxrwxrwx 1 root root  17 oct.  28 23:27 S01rsyslog -> ../init.d/rsyslog
lrwxrwxrwx 1 root root  14 mars  16 17:50 S01sudo -> ../init.d/sudo
lrwxrwxrwx 1 root root  22 oct.  28 23:27 S01triggerhappy -> ../init.d/triggerhappy
lrwxrwxrwx 1 root root  14 oct.  28 23:27 S02cron -> ../init.d/cron
lrwxrwxrwx 1 root root  14 oct.  28 23:27 S02dbus -> ../init.d/dbus
lrwxrwxrwx 1 root root  24 oct.  28 23:28 S02dphys-swapfile -> ../init.d/dphys-swapfile
lrwxrwxrwx 1 root root  22 mars  30 21:38 S02gmediarender -> ../init.d/gmediarender
lrwxrwxrwx 1 root root  13 oct.  28 23:27 S02ntp -> ../init.d/ntp
lrwxrwxrwx 1 root root  15 mars  16 18:00 S02rsync -> ../init.d/rsync
lrwxrwxrwx 1 root root  13 oct.  28 23:59 S02ssh -> ../init.d/ssh
lrwxrwxrwx 1 root root  22 mars  16 21:25 S03avahi-daemon -> ../init.d/avahi-daemon
lrwxrwxrwx 1 root root  19 mars  16 18:47 S03bluetooth -> ../init.d/bluetooth
lrwxrwxrwx 1 root root  25 mars  16 18:48 S03network-manager -> ../init.d/network-manager
lrwxrwxrwx 1 root root  14 mars  23 15:09 S03wicd -> ../init.d/wicd
lrwxrwxrwx 1 root root  20 mars  16 19:20 S04pulseaudio -> ../init.d/pulseaudio
lrwxrwxrwx 1 root root  18 mars  16 19:20 S05rc.local -> ../init.d/rc.local
lrwxrwxrwx 1 root root  19 mars  16 19:20 S05rmnologin -> ../init.d/rmnologin
pi@raspberrypi /etc/rc2.d $ 

/etc/rc2.d/S02gmediarender새로운 시도: 이름을 다음과 같이 변경해 보았습니다. /etc/rc2.d/S06gmediarender 동일한 문제: 재부팅 후 서비스가 네트워크에 표시되지 않습니다.

마침내: 나는 다른 방향으로 나아갔습니다. 즉, 문제를 더 간단하게 만들기 위해 wicd와 네트워크 관리자가 서로 간섭할 수 있다고 의심했기 때문입니다. 그래서 그 중 두 개를 제거하고 /etc/network/interfacesRPI가 WiFi 액세스 포인트에만 연결되도록 구성했습니다. KISS 효과: 간단하고 어리석게 유지하십시오. ;-) Wi-Fi 관리자 오버헤드가 없으며 재부팅 후 GMediaRenderer가 이제 내 네트워크에서 작동합니다.

답변1

최신 데비안은 종속성 기반 초기화 시스템을 사용합니다. 종속성은 init 스크립트 상단의 LSB 헤더에 정의됩니다. 다음에 대한 종속성을 정의해야 합니다 $network.

# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network

관련 정보