실행 중인 서비스 spacenavd start가 /etc/init.d/spacenavd start와 동일하지 않음

실행 중인 서비스 spacenavd start가 /etc/init.d/spacenavd start와 동일하지 않음

3dconnexion 스페이스 마우스를 사용하는 응용 프로그램이 있습니다. 데몬을 사용할 때는 잘 작동 spacenavd하지만 부팅 시 또는 서비스로 데몬을 실행하는 데 문제가 있습니다.

$ sudo 서비스 spacenavd 시작

/var/log/spnavd.log에서

Spacenav daemon 0.5
failed to open config file /etc/spnavrc: No such file or directory. using defaults.
Device detection, parsing /proc/bus/input/devices
using device: /dev/input/event5
device name: 3Dconnexion SpaceNavigator
trying to open X11 display ":0.0"
XAUTHORITY=/root/.Xauthority
No protocol specified
No protocol specified
failed to open X11 display ":0.0"
waiting for X socket file to appear

그러나 시스템 V init 스크립트를 실행하면 아무런 문제가 없습니다.

$ sudo /etc/init.d/spacenavd 시작

/var/log/spnavd.log에서

Spacenav daemon 0.5
failed to open config file /etc/spnavrc: No such file or directory. using defaults.
Device detection, parsing /proc/bus/input/devices
using device: /dev/input/event5
device name: 3Dconnexion SpaceNavigator
trying to open X11 display ":0"
XAUTHORITY=/home/sam/.Xauthority

문제는 sudo 액세스가 필요한 수동으로 시작하는 대신 부팅에서 시작하려면 데몬이 필요하다는 것입니다.

편집 (muru의 제안)

다음 시작 스크립트를 만들었습니다.

description "Spacenavd upstart script. Starts after lightdm to allow for binding with the Xorg server"
author "Samuel Charreyron"

start on started lightm
stop on shutdown

pre-start script
    echo "Starting spacenavd daemon"
end script

script 
    env DISPLAY=:0.0
    exec /usr/sbin/spacenavd -v -d 2> /var/log/spnavd.log
end script

pre-stop script
    echo "Stopping spacenavd daemon"
    # detect daemon's process id
    pid=`cat /var/run/spnavd.pid 2>/dev/null`
    if [ $? != 0 ]; then
        pid=`ps -e | grep spacenavd | awk '{ print $1 }'`
        if [ -z "$pid" ]; then
             echo 'spacenavd daemon is not running, nothing to do.'
             exit 1
        fi
    fi
    kill $pid
end script

spacenavd가 Xorg 서버에 연결할 수 없는 것으로 나타났습니다. 실제로 루트로 실행되는 모든 시작 스크립트는 Xorg를 사용할 수 없는 것 같습니다. spacenavd는 USB 장치에 대한 sudo 액세스가 필요하므로 어떻게 해야 합니까?

답변1

루트는 기본적으로 Xserver에 액세스할 수 없습니다. 이를 활성화하려면 /home/sam/.Xauthority 파일을 /root/.Xauthority에 복사해야 합니다.

sudo cp /home/sam/.Xauthority /root/

재부팅 후 부팅 시 spacenavd 데몬을 활성화하기만 하면 됩니다.

sudo service spacenavd enable

그리고 spacenavd 서비스를 시작합니다:

sudo service spacenavd start

관련 정보