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