ログインしていない状態でユーザーが起動したプロセスが実行されるのはなぜですか?

ログインしていない状態でユーザーが起動したプロセスが実行されるのはなぜですか?

SSHキーを管理するためにgnupgを設定する方法のチュートリアルに従って、gpg-agentの複数のインスタンスを正常に実行しました。

[root@frylock ~]# ps aux | grep agent
root      2764  0.0  0.0   4208   432 ?        Ss   11:15   0:00 ssh-agent
xtian     2785  0.0  0.1   3500   972 ?        Ss   11:18   0:00 gpg-agent -s --enable-ssh-support --daemon --write-env-file /home/frylock/xtian/.gnupg/gpg-agent.env
root      2958  0.0  0.0   3168   688 ?        Ss   11:39   0:00 gpg-agent -s --enable-ssh-support --daemon --write-env-file /root/.gnupg/gpg-agent.env
root      3036  0.0  0.0   4740   392 ?        Ss   11:43   0:00 gpg-agent --daemon
root      3186  0.0  0.0   4740   388 ?        Ss   11:53   0:00 gpg-agent --daemon
root      3299  0.0  0.0   4740   388 ?        Ss   11:58   0:00 gpg-agent --daemon
root      3549  0.0  0.0   4740   392 ?        Ss   12:54   0:00 gpg-agent --daemon

5番目にガイドラインを検討しながら、混乱をほとんど解消することができました。しかし、私が理解していないのは、rootとしてttyにログインしたときになぜ私のユーザーアカウントの所有者が実行しているプロセスですか?

ベストアンサー1

通常、ログアウトすると、ユーザーと対話的に接続されたアプリケーションが終了します。テキスト端末(ローカルまたはリモート)にログインすると、ログアウトすると(カーネルによって直接またはシェルによって間接的に)、その端末に接続されているすべてのアプリケーションが終了します。グラフィカル環境にログインすると、ログアウト時にXサーバーに接続されているすべてのアプリケーションが終了します(より正確には、Xサーバーへの接続が切断され、ほとんどのアプリケーションが終了します)。

ログオフしても、ユーザーが開始したすべてのプロセスが終了するわけではありません。ユーザーは、プログラムをバックグラウンドで実行したり、複数のセッションにログインしたい場合があります。

ssh-agentなどのアプリケーションはgpg-agent対話型ではないため、ターミナルまたはXサーバーに接続されません。一般的な設定では、他の手段でそれらを殺すことができます。通常、エージェントはセッション全体の親プロセスです。セッション開始スクリプトは、ssh-agent $SHELLまたは同じものを実行するようにスケジュールされていますssh-agent $SESSION_MANAGER。これにより、セッションリーダーである子プロセスが終了したときにエージェントも終了します(エージェントが設計された方法であるため)。エージェントが別々に起動した場合は、セッションマネージャがエージェントを終了するように調整します。

チュートリアルに沿って実験したとき、チュートリアルの作成者は予期しない方法で多くのエージェントプロセスを開始し、セッションは終了しませんでした。未使用のものを殺すことができます。安定した設定に達したら、ログアウト時にエージェントが終了することを確認してください。 (単一エージェントを実行して永久に実行することを好まない限り、これはパーソナルコンピュータで合理的なオプションかもしれません。)

おすすめ記事