누가 [닫았는지]에서 가장 오래된 사용자 프로세스

누가 [닫았는지]에서 가장 오래된 사용자 프로세스

명령에 나열된 각 사용자에 대해 가장 오래된 프로세스를 표시하려면 어떻게 해야 합니까 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

관련 정보