これでSSHを介して実行することに慣れています。tmux
接続を切断してもtmux
再接続すると、セッションは引き続き実行されます。
だから私は1人のユーザーでtmuxセッションを開始し(GNOMEのターミナルアプリケーションを使用)、GNOMEからログアウトして再接続(たとえばSSH経由)することで同じことができると仮定しました。私が間違っていることが判明しました。
興味深いことに、解決策として以下を実行するとうまくいくようです。
ssh $(whoami)@localhost
tmux
会話の開始- 切断する
- GNOMEからログアウト
- 他のユーザーとして再ログイン
- SSHを使用してステップ1のユーザーに接続する
tmux
セッションに再接続
ああ、GNOMEがログアウト時にそのユーザーのすべてのプロセスを終了するような理由はわかりません。
上記の回避策より良い方法はありますか?それはおそらく、Bashの組み込み関数のGNOMEishバージョンかもしれません。fg
// bg
?disown
答え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を使用している場合)、ログインセッションが終了したときにプロセスの終了が発生しないようにユーザーを一覧表示できます。gdm
KillOnlyUsers
KillExcludeUsers
でセッションを見ることができます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)
screen
KillUserProcesses=yes
logind.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
答え2
これはsystemdに関連している可能性があります。ある時点で、私はログアウト時にすべてのデーモンを殺したと聞きました(何十年も前のUnixの慣行を無視します!)。しかし、しばらくそれについて聞いていなかったので、彼らはそれを再び変更したようです。簡単に解決できる問題であるか、ユーザーが表示できないようにパッケージャが作業しています。
とにかくシステム化されている場合は、次のような他の答えを見つけてみてください。ここ。