x11vnc 出力を削除できません

x11vnc 出力を削除できません

私はディスプレイにタッチスクリーンがセットアップされた Ubuntu システムを使用しています :0。このタッチスクリーンを Windows からリモートで制御できるようにしたかったので、x11vnc をセットアップしました。うまく動作します。ただし、セットアップは次のとおりです。

私には 2 人のユーザーがいます (root を除く)。1 人はタッチスクリーンに自動的にログインする制限されたユーザー (基本的に権限もパスワードもありません) で、もう 1 人は複雑なパスワード、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/.profilex11vnc -loop &screen -d -R x11vnc x11vnc -loop

今回は、x11vnc は動作しなくなりました (Windows クライアント経由で接続できませんでした) が、出力はすべての端末にまだ表示されていました。


繰り返しになりますが、x11vnc または起動時にプロセスを生成することについて、私が理解していない点が明らかにあります。

上記からお分かりかと思いますが、私はしばらくこのトラブルシューティングに取り組んできましたが、これについて Web 上で他に何も見つけることができません。したがって、ここでの支援は非常にありがたいです。よろしくお願いします。

答え1

出力をリダイレクトする方法>&は私にとってはうまくいきました。

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

関連情報