VNCを使おうとしてsystemdの挙動に悩まされた話です。
Debian Testing amd64版、initはsystemdで、VNCサーバはTigerVNCです。ウインドウマネージャはOpenBox、デスクトップ環境はLXDEです。
VNCビューア側に表示されていたウインドウがほぼ全て消えます。
手順はSSHでログインしvncserver -localhost noでVNCサーバを起動します。VNCビューアで接続し、端末でも何でも良いのですが、ウインドウを開きます。その後、SSH側をexitするなどして接続を切るとVNCビューア側に表示されていたはずのウインドウが全て消えます。
SSH接続が複数ある場合、接続が1つでも残っていれば症状は発生しません。後から接続して、先に接続した方を切断しても症状は出ません。一瞬でも接続数が0になると発生します。
VNC側のウインドウが消えてしまってもVNCサーバは生きていますし、再接続しても特にエラーは出ません。ウインドウマネージャ(openbox)も生きていますので、VNCやX絡みの挙動ではなさそうです。
ウインドウが消える前と後でプロセスの一覧を見比べてみると、systemd --userというプロセスおよび子プロセス達が全て消えていました。
試しに正常に動作している状態からsystemd --userをkillするとやはりウインドウが全部消える症状が発生したので、どうやらsystemd --userが終了してしまうと、この症状が起きるようです。
このプロセスの配下にはD-Busのデーモンプロセスも居るのでD-Busで通信しあっているプロセスがほぼ全て影響を受けるのでしょう。
そもそもsystemd --uesrとは?systemdは詳しくありませんが Arch Linuxのサイトを見ると、ユーザインスタンスというもののようです。「ユーザーの最初のログイン時に実行され、ユーザーのセッションが閉じられた時に終了」とあるので、今回の症状の発生タイミングとも合致しています。
症状の解決策はサイトにある通りloginctl enable-linger username です。このコマンドによりsystemd --userプロセスが起動されなくなるようです。
このsystemdの挙動は不便なだけだと思うんですけど、何のためにあるのでしょう。また一つsystemdの良くわからない部分が増えました……。
< | 2017 | > | ||||
<< | < | 08 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | - | - |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.15.
using GD bundled (2.1.0 compatible)(png support.)