VM을 포함한 모든 사용자 프로세스를 중지할 수 있는 Linux 유틸리티가 있습니까?

VM을 포함한 모든 사용자 프로세스를 중지할 수 있는 Linux 유틸리티가 있습니까?

나는 시스템 V kill 명령인 killall5에 대해 알고 있습니다.

모든 사용자 프로세스(호스트 OS와 게스트 OS 모두)에 SIGSTOP을 보낼 수 있는 유사한 기능이 있습니까?

어쩌면 killall -SIGSTOP일까요?

답변1

만약 너라면정말 이걸 하고 싶어, 다음은 루트에 의해 실행되고 STOP신호가 다음으로 전송됩니다.모든 것:

kill -STOP -1

하지만 이렇게 하면 시스템이 심각하게 손상될 수 있으므로그러지 마세요.

-1프로세스 ID로 지정됨 ( kill()SUSv4의 C 라이브러리 사양에서):

pid가 -1이면 프로세스가 신호를 보낼 권한이 있는 모든 프로세스(지정되지 않은 시스템 프로세스 집합 제외)에 sig를 보내야 합니다.

사용자가 실행하면 해당 사용자가 소유한 모든 프로세스에 대해 동일한 작업이 수행됩니다.현재 쉘을 포함합니다.. 그래서그것도 하지 마세요.

대신 특정 사용자에 대한 모든 프로세스를 중지합니다.존재하다이 사용자(즉, 귀하는 루트입니다):

pkill -STOP -u otheruser 

sudo로그인한 상태에서 이 작업을 수행하면 otheruser여전히 문제가 발생하므로그것도 하지 마세요.

STOP사용자에게 전송된 모든 프로세스를 볼 수 있는 유일한 이유는 해당 사용자가 매우 제한된 수의 작업을 실행하는 데몬 사용자일 때입니다.

CONT나중에 포스팅할 때 참고하세요 ...

답변2

pkill(pgrep 참조)은 원래 Solaris 7 운영 체제에서 사용하도록 작성된 명령줄 유틸리티입니다. 이후 Linux 및 일부 BSD에 대해 다시 구현되었습니다.

kill 및 killall 명령과 마찬가지로 pkill은 프로세스에 신호를 보내는 데 사용됩니다. pkill 명령을 사용하면 확장된 정규식 패턴 및 기타 일치 조건을 사용할 수 있습니다.

특정 사용자에 대한 모든 프로세스에 신호를 보내려면 다음을 사용하세요.

pkill -signal <signalname> -u <userid>    //(by default it will send SIGTERM)

pgrep을 실행하기 전에 테스트하여 신호를 내보낼 프로세스 이름과 pid를 확인할 수 있습니다.

pgrep  -u  <userid> -l 

kill -lpkill에서는 모든 신호(참고자료 참조)를 사용할 수 있습니다 . 바라보다man pkill


매뉴얼 페이지의 정보
pgrep은 현재 실행 중인 프로세스를 탐색하고 표준 출력의 선택 기준과 일치하는 프로세스 ID를 나열합니다. 모든 기준이 일치해야 합니다.
예를 들어, pgrep -u root sshd

이름이 sshd이고 루트가 소유한 프로세스만 나열됩니다. 반면에,

pgrep -u

root,daemon

루트 또는 데몬이 소유한 프로세스가 나열됩니다.

pkill은 stdout에 나열하는 대신 지정된 신호(기본적으로 SIGTERM)를 각 프로세스에 보냅니다.

옵션

-d delimiter 출력에서 각 프로세스 ID를 구분하는 데 사용되는 문자열을 설정합니다(기본값은 줄 바꿈). (pgrep에만 해당.)
-f 이 패턴은 일반적으로 프로세스 이름만 일치합니다. -f를 설정하면 전체 명령줄이 사용됩니다.
-g pgrp,... 나열된 프로세스 그룹 ID의 프로세스만 일치합니다. 프로세스 그룹 0은 pgrep 또는 pkill의 자체 프로세스 그룹으로 변환됩니다.
-G gid,... 나열된 실제 그룹 ID가 있는 프로세스만 일치합니다. 숫자 또는 기호 값을 사용할 수 있습니다.
-l 프로세스 이름과 프로세스 ID를 나열합니다. (pgrep에만 해당.)
-n 최신(가장 최근에 시작된) 일치 프로세스만 선택합니다.
-o 가장 오래된(가장 최근에 시작된) 일치 프로세스만 선택됩니다. -P ppid,... 상위 프로세스 ID가 나열된 프로세스만 일치합니다.
-s sid,... 프로세스 세션 ID가 나열된 프로세스만 일치합니다. 세션 ID 0은 pgrep 또는 pkill의 자체 세션 ID로 변환됩니다.
-t term,... 제어 터미널이 나열된 프로세스만 일치합니다. 지정된 터미널 이름에는 "/dev/" 접두사가 포함되어서는 안 됩니다.
-u euid,... 나열된 유효한 사용자 ID가 있는 프로세스만 일치됩니다. 숫자 또는 기호 값을 사용할 수 있습니다.
-U uid,... 실제 사용자 ID를 나열하는 프로세스만 일치합니다. 숫자 또는 기호 값을 사용할 수 있습니다.
-v 부정적인 일치.
-x 이름(또는 -f가 지정된 경우 명령줄)이 패턴과 정확히 일치하는 프로세스만 일치합니다.
-signal 일치하는 각 프로세스에 전송되는 신호를 정의합니다. 숫자 또는 기호 신호 이름을 사용할 수 있습니다. (pkill에만 해당됩니다.)

답변3

Kill은 PID 매개변수에 특수 값을 허용합니다 . 이는 "이 프로세스가 이 신호를 보낼 권한이 있는 모든 프로세스(지정되지 않은 시스템 프로세스 세트 제외)"를 의미하므로 이는 주어진 상황에서 -1호출이 수행하는 작업과 유사해야 합니다. killall5정지 신호 번호:

kill -SIGSTOP -1

관련 정보