GNOMEを終了するときにプロセスが終了するのを防ぐ方法は?

GNOMEを終了するときにプロセスが終了するのを防ぐ方法は?

これでSSHを介して実行することに慣れています。tmux接続を切断してもtmux再接続すると、セッションは引き続き実行されます。

だから私は1人のユーザーでtmuxセッションを開始し(GNOMEのターミナルアプリケーションを使用)、GNOMEからログアウトして再接続(たとえばSSH経由)することで同じことができると仮定しました。私が間違っていることが判明しました。

興味深いことに、解決策として以下を実行するとうまくいくようです。

  1. ssh $(whoami)@localhost
  2. tmux会話の開始
  3. 切断する
  4. GNOMEからログアウト
  5. 他のユーザーとして再ログイン
  6. SSHを使用してステップ1のユーザーに接続する
  7. tmuxセッションに再接続

ああ、GNOMEがログアウト時にそのユーザーのすべてのプロセスを終了するような理由はわかりません。

上記の回避策より良い方法はありますか?それはおそらく、Bashの組み込み関数のGNOMEishバージョンかもしれません。fg// bgdisown

ベストアンサー1

同時に、私はこれについてさらに研究しました。 Nicholasのシステムポインタは非常に正確です。この問題を軽減する方法はいくつかあります。

1.logind.conf

/etc/systemd/logind.confと友達には3つの関連設定が含まれています。

  • KillUserProcesses=yesログアウトするとsystemd-logind.service(8)セッションが終了しました。
  • KillOnlyUsers=adam eve joe jane上記の設定の適用を制限することを許可するユーザーのリスト(スペースで区切られたリストなど)。
  • KillExcludeUsers=以前の設定とは異なり、影響からユーザーを保護しますKillUserProcesses=yes

したがって、ユーザーを設定または含めるかKillUserProcesses=no(GNOMEを使用している場合)、ログインセッションが終了したときにプロセスの終了が発生しないようにユーザーを一覧表示できます。gdmKillOnlyUsersKillExcludeUsers

でセッションを見ることができますloginctl list-sessions

2.loginctl enable-linger username

次のコマンドを実行して、現在のセッションの遅延を有効にできます。loginctl(1)セッションの範囲では次のようになります(明らかにusername実際のユーザー名またはで置き換えられます$(whoami))。

loginctl enable-linger username

手がかりは以下にあります。logind.conf(5)マニュアルページ:

セッションプロセスに加えて、ユーザープロセスもユーザー管理者ユニットで実行できます[email protected]。遅延設定に応じて、ユーザーはログインセッションとは無関係にプロセスを実行できます。enable-linger説明を参照してください。loginctl(1)

三。systemd-run --scope --user command

このマニュアルはlogind.conf(5)以下を含む手がかり:

。や.などのツールをセッションの範囲外に移動しないと、設定はKillUserProcesses=yes中断されます。例を見るscreen(1)tmux(1)systemd-run(1)

実はマニュアルを読んでいます。systemd-run(1)私たちは次の例を探します:

例5. ユーザーサービスとしてのスタート画面

$ systemd-run --scope --user screen Running scope as unit
run-r14b0047ab6df45bfb45e7786cc839e76.scope.

$ screen -ls There is a screen on:
        492..laptop     (Detached) 1 Socket in /var/run/screen/S-fatima.

これにより、によって開始されたプロセスの子として範囲単位のプロセスがscreen開始されます。端末から切り離すと終了し、サービスユニットが終了するので、ユニットの代わりにユニットを使用してください。画面をユーザーコンポーネントとして実行すると、セッション範囲が指定されないという利点があります。デフォルトで設定されている場合、ユーザーがセッションからログアウトすると、セッション範囲は終了します。systemd --user[email protected]systemd.scope(5)systemd.service(5)screenKillUserProcesses=yeslogind.conf(5)


試験用

systemd 245 (245.4-4ubuntu3.2)
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid

おすすめ記事