x11vnc 출력을 제거할 수 없습니다

x11vnc 출력을 제거할 수 없습니다

저는 디스플레이에 터치스크린이 설정된 Ubuntu 시스템을 사용하고 있습니다:0. 저는 이 터치스크린을 Windows에서 원격으로 제어할 수 있기를 원했기 때문에 x11vnc를 설정했습니다. 잘 작동합니다. 하지만 설정은 다음과 같습니다.

두 명의 사용자가 있습니다(루트 제외). 터치스크린에 자동으로 로그인하는 제한된 사용자(기본적으로 권한 및 비밀번호 없음) 한 명과 복잡한 비밀번호, sudo 권한 등을 사용하여 완전히 구성된 사용자 한 명. 제한된 사용자가 로그인할 때(터치스크린) x11vnc를 시작하는 것에 대해서만 관심이 있습니다. 활성화됨) 그래서 x11vnc -loop &파일 끝에 명령을 넣었습니다 /home/restricted/.profile. 잘 작동합니다. 그러나 나중에 이 사용자가 실행해야 하는(사람 사용자에게는 숨겨져 있는) 다른 명령이 있기 때문에 백그라운드 프로세스여야 합니다.

내가 겪고 있는 문제는 x11vnc의 출력이 매우 시끄럽다는 것입니다. 특히 비밀번호를 사용하지 않고(저는 사용하지 않습니다) 루프이기 때문에 계속 반복되는 경우에는 더욱 그렇습니다. 일반적으로 이것은 문제가 되지 않지만 출력을 /dev/null로 리디렉션하는 것이 작동하지 않을 뿐만 아니라(아래 설명) SSH를 통해 로그인할 때 출력이 다른 사용자의 터미널에 나타납니다(실제로는 유지 관리를 위해 해당 계정을 사용하고 화면이 일부 백그라운드 프로세스의 출력으로 가득 차면 아무것도 할 수 없기 때문에 짜증나는 결과입니다.

--- x11vnc loop: 1 ---

--- x11vnc loop: waiting for: 1551

###############################################################
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
#@                                                           @#
#@  **  WARNING  **  WARNING  **  WARNING  **  WARNING  **   @#
#@                                                           @#
#@        YOU ARE RUNNING X11VNC WITHOUT A PASSWORD!!        @#
#@                                                           @#
#@  This means anyone with network access to this computer   @#
#@  may be able to view and control your desktop.            @#
#@                                                           @#
#@ >>> If you did not mean to do this Press CTRL-C now!! <<< @#
#@                                                           @#
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
#@                                                           @#
#@  You can create an x11vnc password file by running:       @#
#@                                                           @#
#@       x11vnc -storepasswd password /path/to/passfile      @#
#@  or   x11vnc -storepasswd /path/to/passfile               @#
#@  or   x11vnc -storepasswd                                 @#
#@                                                           @#
#@  (the last one will use ~/.vnc/passwd)                    @#
#@                                                           @#
#@  and then starting x11vnc via:                            @#
#@                                                           @#
#@      x11vnc -rfbauth /path/to/passfile                    @#
#@                                                           @#
#@  an existing ~/.vnc/passwd file from another VNC          @#
#@  application will work fine too.                          @#
#@                                                           @#
#@  You can also use the -passwdfile or -passwd options.     @#
#@  (note -passwd is unsafe if local users are not trusted)  @#
#@                                                           @#
#@  Make sure any -rfbauth and -passwdfile password files    @#
#@  cannot be read by untrusted users.                       @#
#@                                                           @#
#@  Use x11vnc -usepw to automatically use your              @#
#@  ~/.vnc/passwd or ~/.vnc/passwdfile password files.       @#
#@  (and prompt you to create ~/.vnc/passwd if neither       @#
#@  file exists.)  Under -usepw, x11vnc will exit if it      @#
#@  cannot find a password to use.                           @#
#@                                                           @#
#@                                                           @#
#@  Even with a password, the subsequent VNC traffic is      @#
#@  sent in the clear.  Consider tunnelling via ssh(1):      @#
#@                                                           @#
#@    http://www.karlrunge.com/x11vnc/#tunnelling            @#
#@                                                           @#
#@  Or using the x11vnc SSL options: -ssl and -stunnel       @#
#@                                                           @#
#@  Please Read the documention for more info about          @#
#@  passwords, security, and encryption.                     @#
#@                                                           @#
#@    http://www.karlrunge.com/x11vnc/faq.html#faq-passwd    @#
#@                                                           @#
#@  To disable this warning use the -nopw option, or put     @#
#@  'nopw' on a line in your ~/.x11vncrc file.               @#
#@                                                           @#
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
###############################################################
20/05/2016 10:53:18 x11vnc version: 0.9.13 lastmod: 2011-08-10  pid: 1551
20/05/2016 10:53:18 XOpenDisplay("") failed.
20/05/2016 10:53:18 Trying again with XAUTHLOCALHOSTNAME=localhost ...
20/05/2016 10:53:18
20/05/2016 10:53:18 *** XOpenDisplay failed. No -display or DISPLAY.
20/05/2016 10:53:18 *** Trying ":0" in 4 seconds.  Press Ctrl-C to abort.
20/05/2016 10:53:18 *** 1 2 3 4
Invalid MIT-MAGIC-COOKIE-1 key20/05/2016 10:53:22 XOpenDisplay(":0") failed.
20/05/2016 10:53:22 Trying again with XAUTHLOCALHOSTNAME=localhost ...
Invalid MIT-MAGIC-COOKIE-1 key20/05/2016 10:53:22 XOpenDisplay(":0") failed.
20/05/2016 10:53:22 Trying again with unset XAUTHLOCALHOSTNAME ...
Invalid MIT-MAGIC-COOKIE-1 key20/05/2016 10:53:22

20/05/2016 10:53:22 ***************************************
20/05/2016 10:53:22 *** XOpenDisplay failed (:0)

*** x11vnc was unable to open the X DISPLAY: ":0", it cannot continue.
*** There may be "Xlib:" error messages above with details about the failure.

Some tips and guidelines:

** An X server (the one you wish to view) must be running before x11vnc is
   started: x11vnc does not start the X server.  (however, see the -create
   option if that is what you really want).

** You must use -display <disp>, -OR- set and export your $DISPLAY
   environment variable to refer to the display of the desired X server.
 - Usually the display is simply ":0" (in fact x11vnc uses this if you forget
   to specify it), but in some multi-user situations it could be ":1", ":2",
   or even ":137".  Ask your administrator or a guru if you are having
   difficulty determining what your X DISPLAY is.

** Next, you need to have sufficient permissions (Xauthority)
   to connect to the X DISPLAY.   Here are some Tips:

 - Often, you just need to run x11vnc as the user logged into the X session.
   So make sure to be that user when you type x11vnc.
 - Being root is usually not enough because the incorrect MIT-MAGIC-COOKIE
   file may be accessed.  The cookie file contains the secret key that
   allows x11vnc to connect to the desired X DISPLAY.
 - You can explicitly indicate which MIT-MAGIC-COOKIE file should be used
   by the -auth option, e.g.:
       x11vnc -auth /home/someuser/.Xauthority -display :0
       x11vnc -auth /tmp/.gdmzndVlR -display :0
   you must have read permission for the auth file.
   See also '-auth guess' and '-findauth' discussed below.

** If NO ONE is logged into an X session yet, but there is a greeter login
   program like "gdm", "kdm", "xdm", or "dtlogin" running, you will need
   to find and use the raw display manager MIT-MAGIC-COOKIE file.
   Some examples for various display managers:

     gdm:     -auth /var/gdm/:0.Xauth
              -auth /var/lib/gdm/:0.Xauth
     kdm:     -auth /var/lib/kdm/A:0-crWk72
              -auth /var/run/xauth/A:0-crWk72
     xdm:     -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk
     dtlogin: -auth /var/dt/A:0-UgaaXa

   Sometimes the command "ps wwwwaux | grep auth" can reveal the file location.

   Starting with x11vnc 0.9.9 you can have it try to guess by using:

              -auth guess

   (see also the x11vnc -findauth option.)

   Only root will have read permission for the file, and so x11vnc must be run
   as root (or copy it).  The random characters in the filenames will of course
   change and the directory the cookie file resides in is system dependent.

See also: http://www.karlrunge.com/x11vnc/faq.html

 --- x11vnc loop: sleeping 2000 ms ---


 --- x11vnc loop: 2 ---

그리고 그것은 계속해서 반복됩니다.

디스플레이를 열 수 없다고 소리지르고 있지만 작동합니다. 제한된 사용자가 이미 이 명령을 실행하여 연결이 잘 되었지만 이제 이 사용자도 그렇게 하려고 하여 연결할 수 없기 때문인 것 같습니다.

왜 이런 일이 발생합니까? 내 이해에는 분명히 구멍이 있습니다. 내가 시도한 다양한 작업은 다음과 같습니다.


출력을 /dev/null로 리디렉션

같은 곳에서 /home/restricted/.profile기존 명령어 x11vnc -loop &x11vnc -loop > /dev/null 2>&1 &.

이것은 효과가 없었고 출력은 여전히 ​​다른 사용자의 터미널에 있었고 (분명히) 사라지지 않았습니다.


nohup으로 명령 실행

다시 에서 /home/restricted/.profile기존 명령 x11vnc -loop &nohup x11vnc -loop &.

이번에도 전혀 효과가 없었습니다. 출력은 여전히 ​​​​존재했습니다. Nohup은 nohup.out 파일도 생성하지 않았습니다. 적어도 나는 그것을 찾을 수 없었다.

완성을 위해 nohup x11vnc -loop > /dev/null 2>&1 &다시 시도해도 아무런 변화가 없었습니다.


x11vnc를 데몬으로 시작

여기서 나는 내가 뭔가 잘못하고 있다는 것을 깨닫기 시작했습니다. 어쩌면 /home/restricted/.profile이런 것을 놓을 장소가 잘못되었기 때문일 수도 있다고 생각했습니다 . 그래서 /etc/init.d부팅 시 실행될 스크립트를 작성 하고 update-rc.d스켈레톤 파일의 예시를 따라 링크를 만들었습니다.

다시 한번 x11vnc가 작동했지만 출력은 모든 터미널에 있었습니다.


화면에서 x11vnc 시작

이 문제를 해결하려는 마지막 시도는 스크린 세션에서 명령을 던지는 것이었습니다. 화면은 보통 이런 문제를 해결해 주지만 이번에는 그렇지 않습니다.

에서는 다음으로 /home/restricted/.profile교체했습니다.x11vnc -loop &screen -d -R x11vnc x11vnc -loop

이번에는 x11vnc가 더 이상 작동하지 않았지만(Windows 클라이언트를 통해 연결할 수 없음) 모든 터미널에서 출력이 여전히 유지되었습니다.


다시 말하지만, x11vnc나 부팅 시 프로세스 생성에 대해 제가 이해하지 못하는 부분이 분명히 있습니다.

위에서 알 수 있듯이 저는 한동안 이 문제 해결에 참여했지만 웹에서 이에 대한 다른 내용을 찾을 수 없습니다. 그러니 여기 도움이 굉장할 것입니다. 미리 감사드립니다.

답변1

출력을 리디렉션하는 것이 >&저에게 효과적이었습니다.

x11vnc -repeat -noxdamage -ncache 10 -forever -loop -rfbauth &> x11vnc.log

관련 정보