マシンからログアウトした後もサーバー プロセスを実行し続けることは可能ですか?
screen
通常、私は、、tmux
またはを使用しますnohup
。これらはすべて、ssh を使用しておらず、マシンをローカルで使用している場合に役立ちます。(Gnome デスクトップも実行されています。)
では、ローカルマシンにログインしているときにサーバープロセスを開始する方法はありますか?
答え1
systemd 230 以降では、KillUserProcesses
デフォルトで有効になっています。
https://github.com/systemd/systemd/commit/97e5530cf2076a2b4fc55755917262607aaa6338
これを変更するには、編集します/etc/systemd/logind.conf
。たとえば、この動作をグローバルに無効にするように設定したりKillUserProcesses=no
、KillExcludeUsers=<your-username>
ユーザー名をこの動作から除外するように設定したりします。
または、を使用してサーバープロセスを開始することで、アドホックベースでこの問題を回避することもできますsystemd-run --scope --user <executable>
。これに関する詳細は、Example 5. Start screen as a user service
の下部にあります。systemd-run(1)。
答え2
私は Debian Stretch を実行していますが、KillUserProcesses
システム上ではデフォルトで無効になっていますが、screen
ログアウトすると無効になります。いくつか実験した結果、次の方法ではローカルでログアウトした後も screen セッションが継続されるようです。
screen -m
またはすぐに切り離したい場合
screen -m -d
なぜそうなるのかは分かりませんが、私の場合はうまくいっているようです。
編集:
さらにテストしてみたところ、コマンドで screen を実行してもうまくいかないようです。4 つのセッションを開始し、必要に応じて切断しました。
ログアウト前:
user 31365 1 0 16:20 ? 00:00:00 SCREEN -S mdc -m -d vim
user 31376 1 0 16:20 ? 00:00:00 SCREEN -S md -m -d
user 31391 1 0 16:20 ? 00:00:00 SCREEN -S mc -m vim
user 31399 1 0 16:21 ? 00:00:00 SCREEN -S m -m
ログアウトして再度ログインした後:
user 31376 1 0 16:20 ? 00:00:00 SCREEN -S md -m -d
user 31399 1 0 16:21 ? 00:00:00 SCREEN -S m -m
コマンドで起動した 2 つのインスタンスがログアウト中に終了したようです。残りの 2 つのセッションに接続して VIM を起動し、その後デタッチして再度ログアウトしました。再度ログインした後、セッションはまだ実行されており、各セッションで VIM も実行されていました。