![누가 [닫았는지]에서 가장 오래된 사용자 프로세스](https://linux55.com/image/184093/%EB%88%84%EA%B0%80%20%5B%EB%8B%AB%EC%95%98%EB%8A%94%EC%A7%80%5D%EC%97%90%EC%84%9C%20%EA%B0%80%EC%9E%A5%20%EC%98%A4%EB%9E%98%EB%90%9C%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4.png)
명령에 나열된 각 사용자에 대해 가장 오래된 프로세스를 표시하려면 어떻게 해야 합니까 who
? 나는 명령을 사용해 보았습니다.
ps -u $user --sort +start_time
그러나 사용자를 필터링하고 PID를 추출하는 방법을 찾을 수 없습니다. 출력은 다음과 유사해야 합니다.
user1 oldestprocessPID
user2 oldestprocessPID
리눅스 버전: 우분투 18.04.5 LTS
답변1
특정 사용자 이름이 지정된 가장 오래된 PID는 user
다음을 통해 찾을 수 있습니다.
pgrep -U user -o
-o
가장 오래된 PID를 반환하는 책임은 어디에 있습니까( pgrep
매뉴얼 참조).
현재 로그인한 모든 사용자에 대해 이 명령을 실행하려면 다음을 수행하십시오.
users | tr ' ' '\n' |
while read user; do
printf '%s %d\n' "$user" "$(pgrep -U "$user" -o)"
done
users
현재 로그인한 사용자를 한 줄에 인쇄하는 유틸리티를 호출합니다 . 사용자 이름 사이의 공백을 tr
줄 바꿈으로 변경하고 루프를 통해 이러한 공백을 변수로 하나씩 읽어옵니다 user
. 각 사용자 이름에 대해 pgrep -U "$user" -o
호출됩니다. 해당 출력은 printf
해당 특정 사용자에 대한 결과 행의 형식을 지정 하기 위한 매개변수로 사용됩니다 .
read
유틸리티가 구분 기호 -d
(예: 및 )를 읽을 수 zsh
있는 쉘 의 경우 bash
다음과 같이 처리할 수 있습니다 tr
.
users |
while read -d ' ' user; do
printf '%s %d\n' "$user" "$(pgrep -U "$user" -o)"
done