Ubuntu 10.04에서 VNC 서버를 시작하는 방법

Ubuntu 10.04에서 VNC 서버를 시작하는 방법

나는 또 다른 시작 스크립트 질문을 할 만큼 오랫동안 이 문제로 어려움을 겪었습니다.

비교적 간단한 시작 스크립트가 있습니다.

### BEGIN INIT INFO
# Provides:          startVNC
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      
# Short-Description: Start VNC server at boot time
# Description:       Test
### END INIT INFO

#!/bin/sh
echo "JOB RUN AT $(date)"
echo "============================"
echo ""
/usr/bin/vncserver -geometry 1280x1024 -depth 24

분명히 마지막 줄만 정말 중요합니다. 스크립트는 실행 가능합니다.

ls -l startVNC

생산하다:

-rwxr-xr-x 1 root root 406 2011-12-07 15:45 startVNC

vncserver가 시작될 때 ssh를 통해 로그인하고 실행하면 my_user데스크탑에서 GUI를 볼 수 있습니다. 그런 다음 부팅 시 실행되도록 5가지를 시도했습니다.

  1. 내 스크립트를 에 복사하고 /etc/init.d/호출합니다 update-rc.d -f startVNC defaults(또한 99after를 사용하여 해당 스크립트가 의존하는 모든 것이 이미 실행 중인지 defaults확인합니다 ). vncserver폴더에 생성된 모든 심볼릭 링크를 확인했습니다 /etc/rcX.d/. 하지만 재부팅하거나 시작할 때 작동하지 않습니다.
  2. /etc/rc.local전에 내 스크립트를 추가하세요 .exit 0
  3. crontab -e다음과 같이 추가됨@reboot /home/my_user/scripts/startVNC
  4. 내 스크립트를 다음에 추가하세요./etc/init.d/rcS
  5. 시스템->기본 설정->Gnome의 응용 프로그램 시작에 내 스크립트를 추가했습니다.

그러나 그들 중 누구도 작동하지 않습니다. 또 무엇을 확인할 수 있나요? 내 스크립트에 문제가 있는 것이 아닐까요? 프로세스가 작동하려면 프로세스의 소유자여야 한다고 생각 my_user하지만 디버깅하는 방법을 모르겠습니다.

어떤 단서도 감사합니다.

답변1

당신이 사용할 수있는su[귀하의 사용자 이름]-c /usr/bin/vncserver루트 대신 사용자로 vncserver를 실행하십시오.

또 다른 요점: 스크립트에서는 VNC 서버 시작과 중지 사이에 차이가 없습니다. 일반적으로 init 스크립트는 다양한 사례를 사용하여 서비스를 시작/중지합니다.

case "$1" in
    start)
    # code to start the application
    ;;

    stop)
    # code to stop the application
    ;;

    restart)
    $0 stop
    $0 start
    ;;
esac

여기다음은 init 스크립트를 사용하여 vnc 서버를 시작하는 방법에 대한 자세한 예입니다.

답변2

알았어, 알겠어. 문제는 다음과 같습니다

  1. 일반적으로 일어나는 일은 내 스크립트를 루트로 실행하면 작동하지 않는다는 것입니다. 그렇기 때문에 꼭 사용해야 하는su [my_user] -c
  2. 옵션은 인용되어야 합니다.

    su my_user -c "/usr/bin/vncserver -geometry1280x1024 -깊이16"

  3. 나는 또한 덧붙였습니다 . /lib/lsb/init-functions. exit 0이것이 필요한지는 모르겠지만 어떤 해를 끼치지는 않을 것이라고 확신합니다. 제공된 자세한 예제에서 복사했습니다.토후와워후.

그래서 나는 다음과 같이 끝납니다.

### BEGIN INIT INFO
# Provides:          startVNC
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      
# Short-Description: Start VNC server at boot time
# Description:       A sophisticated script to do the job.
### END INIT INFO

#!/bin/sh
echo "JOB RUN AT $(date)"
echo "============================"
echo ""

. /lib/lsb/init-functions
su my_user -c "/usr/bin/vncserver -geometry 1280x1024 -depth 16"

exit 0

좋은 결과. 물론, 위에서 인용한 내용을 사용하면잘 디자인된 스크립트더 좋을 수도 있습니다. 다음을 통해 시작에 스크립트를 추가했습니다.

sudo update-rc.d -f startVNC start 99 2 3 4 5 .

종료 시 아무것도 실행할 이유가 없기 때문입니다(내가 수행하지 않는 로깅 제외).

내 원래 질문에서 shebang(#!으로 시작하는 줄)이 잘못 배치되었다는 설명도 참조하세요. 하지만 작동하기 때문에 여기에 테스트되지 않은 코드를 포함하고 싶지 않습니다. 사용하고 싶다면 바꿔야 할 것 같습니다.

관련 정보