Linux는 pkill을 사용하여 프로세스 이름으로 특정 사용자를 죽입니다.

Linux는 pkill을 사용하여 프로세스 이름으로 특정 사용자를 죽입니다.

실행 중인 프로세스를 종료하기 위해 pkill 명령을 실행하는 bash 스크립트가 있습니다. 내 사용자 이름 매개변수는 다음과 같이 정의됩니다.

username=$(whoami)

나는 이름을 기반으로 프로세스를 종료할 수 있지만 현재 사용자에 대해서만 종료할 수 있기를 원합니다. 이 스크립트는 다른 사용자도 사용하므로 해당 사용자에게도 스크립트가 작동하도록 사용자 이름 매개변수를 설정하세요.

누구든지 이 작업을 수행하는 방법을 말해 줄 수 있습니까? 나는 다음을 시도하고 있습니다 :

pkill -f -U $username | "testProcess"

이것이 올바른 접근 방식입니까?

답변1

testProcess현재 사용자에 대해 호출된 프로세스를 종료하는 구문은 다음과 같습니다.

pkill -x -U "$(id -u)" testProcess

나는 습관적으로 u-ing을 사용하는 id -u것이 아니라 스크립트에서 더 일반적으로 사용되기 때문에 사용합니다 . 환경에 따라 또는 유사한 기존 변수를 사용할 수 있습니다 (그러나 무엇을 사용하든 확장을 큰따옴표로 묶어야 합니다).whoamiidwhoami$USER$LOGNAME

를 사용하면 -f정규식으로 해석된 패턴이 명령 이름뿐만 아니라 모든 프로세스의 명령줄과 일치됩니다. 의 경우 -x패턴은 전체 문자열과 일치해야 합니다. 위의 경우 프로세스 이름은 정확해야 하며 testProcess, 예를 들어 atestProcess2.; -x와 결합하면 -f전체 명령줄과 일치해야 합니다.

pkill시도 중인 명령이 의 출력을 이름이 지정된 명령으로 파이프하려는 것 같습니다 testProcess. 이것은 당신이 원하는 것이 아닐 수도 있습니다.

루트가 아닌 사용자는 다른 사용자의 프로세스에 신호를 보낼 수 없으므로 이 -U옵션과 해당 옵션 인수는 사용자가 루트가 아니면 꼭 필요한 것은 아닙니다("작업이 허용되지 않음" 오류를 피하려는 경우 제외).

관련 정보