세션이 닫힌 후 SSH 세션에서 시작된 무한 실행 프로세스(ztail)를 중지하는 방법

세션이 닫힌 후 SSH 세션에서 시작된 무한 실행 프로세스(ztail)를 중지하는 방법

특별한 문제가 있습니다. 내 서버는 여러 관리자가 명령줄 인터페이스를 통해 동시에 관리할 수 있도록 여러 SSH 세션을 동시에 지원합니다. 압축된 로그 파일을 표시 하는 명령이 있습니다 ztail. 이제 현재 SSH 세션이 닫히면 이상적으로 명령이 작동을 중지해야 합니다 (명령을 중지하기 위해 Ctrl-를 누를 필요가 없음). 그러나 새 SSH 세션을 시작하면 이전 세션이 닫혔음에도 불구하고 프로세스()가 여전히 백그라운드에서 실행되고 CPU를 소비하는 것을 볼 수 있습니다. 이제 해당 변수/플래그를 사용하여 이전에 닫힌 세션에서 시작된 명령을 닫거나 중지할 수 있도록 세션이 언제 닫혀 있는지 어떻게 알 수 있습니까?Cztailztail

답변1

이는 예를 들어 백그라운드에서 또는 cron을 통해 새로운 루트 수준 프로세스(즉, 상위 프로세스 없이)로 실행 (또는 다른 명령) ztail하는 경우에만 발생합니다 .

일반적으로 표준 세션을 시작하면 ssh시작하는 모든 프로그램의 루트 프로세스인 쉘 프로세스가 생성됩니다. ssh세션이 종료 되면 커널은 모든 하위 프로세스도 종료합니다. (이것이 사람들이 일반적으로 screen지속 세션과 유사한 것을 사용하는 이유입니다.)

따라서 가장 쉬운 방법은 이 기본 동작을 활용하는 것입니다. 루트 프로세스가 ps axjf무엇 인지 확인하고 ztail종료된 세션 ssh에서 살아남은 이유를 알아보세요.

답변2

SSH 세션 중에 쉘 세션은 하위 프로세스가 됩니다. 이 하위 프로세스에는 또 다른 하위 프로세스가 있습니다: ztail. ztail은 셸을 닫은 후 상위 항목을 잃게 됩니다. 이러한 모든 프로세스와 마찬가지로 PID 1을 사용하여 init에 의해 실행됩니다.

상위 pid가 ztail1이면 "좀비" 중 하나일 가능성이 높습니다.

관련 정보