맨 위쉘 내의 프로세스 트리를 잘 볼 수 있습니다. 예를 들어, 종료하려는 작업에 보낼 신호를 누른 F9 (KILL)
다음 선택하여 프로세스를 종료할 수 있습니다 .15 SIGTERM
그러나 이렇게 하면 한 번에 하나의 프로세스만 종료할 수 있습니다. 전체 프로세스 트리를 종료하는 방법이 있습니까 htop
?
답변1
에서 man htop
:
대화형 명령
공간 프로세스를 표시하거나 표시 해제합니다.여러 프로세스에서 작동할 수 있는 명령(예: "kill")은 표시된 프로세스 목록에 적용됩니다., 현재 강조표시된 것 대신.
유 모든 프로세스의 태그를 해제합니다(스페이스바로 추가된 모든 태그를 제거합니다).
F9, 케이 "Kill" 프로세스: 메뉴에서 선택한 신호를 프로세스 또는 프로세스 그룹에 보냅니다.프로세스가 표시되면 표시된 모든 프로세스에 신호가 전송됩니다. 플래그가 없으면 현재 선택된 프로세스로 전송됩니다.
정확히 당신이 찾고 있는 대답은 아니지만 가깝습니다. kill을 사용하여 프로세스 그룹이나 하위 프로세스를 제거할 수도 있습니다. 다음을 참조하세요.
https://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes
답변2
그러한 기능은 오랫동안 있었지만 2018년까지 매뉴얼에서 사라졌습니다. 이 c
키를 누르면 현재 강조 표시된 프로세스와 모든 하위 프로세스가 선택됩니다. 그런 다음 선택한 프로세스에 적용되는 작업(예: 키를 사용한 종료 k
)이 해당 프로세스와 해당 하위 프로세스에 적용됩니다.
그러나 그것은 원자적이지 않습니다. 버튼을 누른 시점과 커널이 모든 프로세스를 종료하는 사이에 새로운 하위 프로세스가 생성 되면 c
해당 프로세스는 종료되지 않으며 결국 init 프로세스에 다시 연결될 가능성이 높습니다. 이는 htop이 프로세스를 반복하면서 하나씩 종료하기 때문입니다.
나는 가지고있다패치를 제안했다Atomic group killer는 얼마 전 htop에 추가되었지만 구현에 대한 합의가 이루어지지 않아 병합할 수 없습니다. 이를 사용하면 htop에서 전체 프로세스 그룹을 원자적으로 종료할 수 있습니다. 이것은 전체 트리를 죽이는 것과 완전히 같지는 않지만, 내가 아는 한 커널은 임의의 트리를 자동으로 죽이는 방법을 제공하지 않습니다.
답변3
htop 맨페이지에서:
F5, t 트리 보기: 프로세스를 부모-자식 관계에 따라 구성하고, 프로세스 간의 관계를 트리 형태로 정리합니다. 이 키를 전환하면 트리와 이전에 선택한 정렬 보기 간에 전환됩니다. 정렬 보기를 선택하면 트리 보기가 종료됩니다.
따라서 F5를 누른 다음 "t"를 눌러야 할 수도 있습니다. 이것은 전체 나무를 죽일 것입니다.
답변4
htop에서 눌러서 c
프로세스 트리를 표시한 다음 k
눌러서 종료합니다.
c Tag the current process and its children. Commands that can operate on
multiple processes, like "kill", will then apply over the list of tagged
processes, instead of the currently highlighted one.