Не могу избавиться от вывода x11vnc

Не могу избавиться от вывода x11vnc

Я работаю в системе Ubuntu, в которой сенсорный экран установлен на дисплее :0. Я хотел иметь возможность управлять этим сенсорным экраном удаленно из Windows, поэтому я настроил x11vnc. Он отлично работает. Но вот настройка:

У меня два пользователя (исключая root). Один ограниченный пользователь (по сути, без разрешений и пароля), который входит в систему автоматически через сенсорный экран, и один полностью настроенный пользователь со сложным паролем, разрешением 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 на экране

Моя последняя попытка исправить это дело заключалась в том, чтобы запустить команду в сеансе screen. Обычно Screen исправляет такие проблемы для меня... Но не в этот раз.

В /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

Связанный контент