centos에서 시작할 때 xvfb를 시작하는 올바른 방법은 무엇입니까?


11

이 튜토리얼을 따르고 있으며이 우분투 특정 단계의 동등한 centos 버전을 알고 싶습니다.

You may receive a few warnings regarding fonts and such, but it’ll still work despite these. If you want the framebuffer to start automatically on system startup you can do:
sudo update-rc.d xvfb defaults 10

centos에서 시작할 때 xvfb를 시작하는 올바른 방법은 무엇입니까?

답변:


12

부팅시 xvfb를 추가하고 시작하려면 다음 init 스크립트를 사용하십시오.

   #!/bin/bash
   #chkconfig: 345 95 50
   #description: Starts xvfb on display 99
   if [ -z "$1" ]; then
   echo "`basename $0` {start|stop}"
       exit
   fi

   case "$1" in
   start)
       /usr/bin/Xvfb :99 -screen 0 1280x1024x24 &
   ;;

   stop)
       killall Xvfb
   ;;
   esac

1
이 파일에 대한 실행 권한을 추가하는 것을 잊지 마십시오 : chmod + x xvfb
panchicore

2
그의 질문은 CentOS에 대해 제기되었지만 다른 배포판에도 유용합니다. 이것은 우분투에서 잘 작동합니다. update-rc.d대신에 실행해야합니다 chkconfig. 에 대한 자세한 내용 은 이 답변 을 참조하십시오 update-rc.d.
23:48에

1
문제는 CentOS에서 수행하는 방법에 관한 것입니다. 현재 CentOS는 systemd를 사용하며이 답변은 문제를 해결하지 못합니다. JdeBP의 답변이 더 적절합니다.
Yoichi

6 년 전 현재 버전의 centos가 존재하지 않았을 때 (iirc도 시스템화하지 않았 음) 질문이 고려되었습니다. 시스템 솔루션은 훨씬 좋으며 가능한 경우 선호되는 옵션이어야합니다.
Tacticus

19

그리고 이제 체계적인 답변입니다.

이러한 질문과 대답 이후 거의 4 년이 지났으며 세상은 변하지 않았지만 변화했습니다. 버전 7부터 CentOS는 systemd를 사용했습니다. 우분투는 질문과 의견에 언급되어 있습니다. 버전 15부터 Ubuntu는 systemd도 사용했습니다.

rcsystemd에서 System 5 스크립트를 사용할 수 있지만 여기서 답변의 스크립트는 가장 차선책입니다. D killall몬 관리에 대한 문제는 잘 알려진을 모호 하게 사용합니다 . 다른 하나는 서비스 관리자 자체 가 dæmon 프로세스를 추적하기 때문에 서비스 관리자가 실제로 필요 하지 않은 rickety lock 파일과 PID 파일 논리의 혼란입니다 .

다른 곳에서 말했듯이,이 내용을 배우기 시작하고 CentOS Linux 버전 7 이상 또는 Ubuntu Linux 버전 15 이상 rc에있는 경우 먼저 System 5 스크립트로 시작하지 마십시오 . 시스템 단위 파일로 시작하십시오.

여러 Xvfb 서비스를위한 템플릿

xvfb.servicexvfb의 간단한 시스템 단위 파일은 https://www.centos.org/forums/viewtopic.php?f=48&t=49080#p208363https://askubuntu.com/a/621256/43344에 있습니다. 그러나 후자에서 언급했듯이 템플릿 화 된 접근 방식을 취할 수도 있습니다.

[단위]
Description = 표시 % I 용 가상 프레임 버퍼 X 서버
이후 = network.target

[서비스]
ExecStart = / usr / bin / Xvfb % I-스크린 0 1280x1024x24

[설치]
WantedBy = 다중 사용자. 대상

시스템 전체 (사용자 별이 아닌) 서비스를위한 로컬로 작성된 비 시스템 비 패키징 단위 파일로서 이것은 /etc/systemd/system/xvfb@.service물론 진행됩니다 .

서비스 제어

원하는 표시 번호를 사용하여 템플릿을 실제 명명 된 서비스로 인스턴스화합니다. :99따라서 표시를 위해 실제 서비스 인스턴스 이름이 xvfb@:99.service입니다.

  • 로 부트 스트랩에서 서비스가 자동 시작되도록 설정하십시오 systemctl enable xvfb@:99.service.
  • 로 서비스 자동 시작 설정을 해제하십시오 systemctl disable xvfb@:99.service.
  • 로 서비스를 수동으로 시작하십시오 systemctl start xvfb@:99.service.
  • 로 서비스를 수동으로 중지하십시오 systemctl stop xvfb@:99.service.
  • 로 현재 서비스 상태를 자세히 검사하십시오 systemctl status xvfb@:99.service.

추가 자료


"시스템 서비스에 xvfb 추가"링크가 작동하지 않습니다.
Manish

참조 된 수퍼 유저 질문은 자동 삭제되었습니다. 다행스럽게도 질문자는 다중 게시했습니다. ☺
JdeBP

4

이를 수행하기위한 멋진 init 스크립트가 있습니다 :

http://onemoretech.wordpress.com/2009/05/27/an-xvfb-init-script/

스크립트는 다음과 같습니다

#!/bin/bash
#
# /etc/rc.d/init.d/xvfbd
#
# chkconfig: 345 95 28
# description: Starts/Stops X Virtual Framebuffer server
# processname: Xvfb
#

. /etc/init.d/functions

[ "${NETWORKING}" = "no" ] && exit 0

PROG="/usr/X11R6/bin/Xvfb"
PROG_OPTIONS=":5 -screen 0 640x480x24"
PROG_OUTPUT="/tmp/Xvfb.out"

case "$1" in
    start)
        echo -n "Starting : X Virtual Frame Buffer "
        $PROG $PROG_OPTIONS>>$PROG_OUTPUT 2>&1 &
        disown -ar
        /bin/usleep 500000
        status Xvfb & >/dev/null && echo_success || echo_failure
        RETVAL=$?
        if [ $RETVAL -eq 0 ]; then
            /bin/touch /var/lock/subsys/Xvfb
            /sbin/pidof -o  %PPID -x Xvfb > /var/run/Xvfb.pid
        fi
        echo
        ;;
    stop)
        echo -n "Shutting down : X Virtual Frame Buffer"
        killproc $PROG
        RETVAL=$?
        [ $RETVAL -eq 0 ] && /bin/rm -f /var/lock/subsys/Xvfb
 /var/run/Xvfb.pid
        echo
        ;;
    restart|reload)
        $0 stop
        $0 start
        RETVAL=$?
        ;;
    status)
        status Xvfb
        RETVAL=$?
        ;;
    *)
     echo $"Usage: $0 (start|stop|restart|reload|status)"
     exit 1
esac

exit $RETVAL

스크립트를 xvfbd로 저장하고 스크립트를에 복사 /etc/init.d한 후 다음 명령을 실행하십시오.

sudo chkconfig --add xvfbd

1

가장 간단한 방법은 /etc/rc.local파일에 다음 행을 추가하는 것입니다 (없는 경우 작성).

Xvfb :0 -screen 0 1024x768x16 &

부팅시 X 가상 프레임 버퍼를 시작합니다.


-2

컴퓨터 부팅시 무언가를 시작하거나 시작해야하는 경우 더 쉬운 방법을 사용할 수 있습니다.

Redhat / CentOS에서이 파일에 스크립트 라인을 추가하십시오. /etc/rc.d/rc.local


난 당신을 downvote하지 않았지만, 나는 이것이 시스템 V에서만 작동한다고 생각합니다.
Donato

나는 오늘 바닐라 CentOS 7 시스템에서 이것을 시도했지만 (게으 르기 때문에) Xvfb를 시작했습니다.
clusterdude
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.