로그인하지 않은 상태에서 사용자가 시작한 프로세스가 실행되는 이유는 무엇입니까?

로그인하지 않은 상태에서 사용자가 시작한 프로세스가 실행되는 이유는 무엇입니까?

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

다섯 번째로 지침을 검토하면서 혼란을 대부분 해소할 수 있었습니다. 그러나 내가 이해하지 못하는 것은 루트로 tty에 로그인했을 때 왜 내 사용자 계정의 소유자가 실행 중인 프로세스입니까?

답변1

일반적으로 로그아웃하면 사용자와 대화형으로 연결된 애플리케이션이 종료됩니다. 텍스트 터미널(로컬 또는 원격)에 로그인할 때, 로그아웃할 때(커널에 의해 직접 또는 셸에 의해 간접적으로) 해당 터미널에 연결된 모든 응용 프로그램이 종료됩니다. 그래픽 환경에 로그인하면 로그아웃할 때 X 서버에 연결된 모든 응용 프로그램이 종료됩니다(더 정확하게는 X 서버에 대한 연결이 끊어져 대부분의 응용 프로그램이 종료됩니다).

로그오프해도 사용자가 시작한 모든 프로세스가 종료되지는 않습니다. 사용자는 프로그램이 백그라운드에서 실행되거나 여러 세션에 로그인되기를 원할 수 있습니다.

ssh-agent및 같은 응용 프로그램은 gpg-agent대화형이 아니므로 터미널이나 X 서버에 연결되지 않습니다. 일반적인 설정에서는 다른 수단으로 그들을 죽일 수 있습니다. 일반적으로 에이전트는 전체 세션의 상위 프로세스입니다. 세션 시작 스크립트는 ssh-agent $SHELL또는 같은 것을 실행하도록 예약됩니다 ssh-agent $SESSION_MANAGER. 이렇게 하면 세션 리더인 하위 프로세스가 종료될 때 에이전트도 종료됩니다(에이전트가 설계된 방식이기 때문입니다). 에이전트가 다르게 시작된 경우 세션 관리자가 에이전트를 종료하도록 조정합니다.

튜토리얼을 따라하면서 실험했을 때 튜토리얼 작성자가 예상하지 못한 방식으로 많은 에이전트 프로세스를 시작했으며 세션이 종료되지 않았습니다. 사용하지 않는 것을 죽일 수 있습니다. 안정적인 설정에 도달하면 로그아웃 시 에이전트가 종료되는지 확인하세요. (단일 에이전트를 실행하고 영원히 실행하는 것을 선호하지 않는 한 이는 개인용 컴퓨터에서 합리적인 옵션일 수 있습니다.)

관련 정보