모든 사용자를 확보하고 작동 여부를 확인하는 방법은 무엇입니까?

모든 사용자를 확보하고 작동 여부를 확인하는 방법은 무엇입니까?

grep사용자 목록(명령줄에서 제공)과 사용자가 로그인/작업 중이거나 로그인하지 않은 경우 해당 출력을 어떻게 얻을 수 있습니까?

답변1

 perl -le 'print while $_=getpwent' | sort

사용자 이름 목록이 제공됩니다.

 ps -eo user= | sort -u

해당 uid가 하나 이상의 실행 중인 프로세스의 유효 사용자 ID인 사용자 이름 목록이 제공됩니다.

 who | awk '{print $1}' | sort -u

현재 사용자가 나열됩니다.로그인

 printf '%s\n' "$@" | sort -u

스크립트에 인수로 전달된 사용자가 나열됩니다.

이제 이 4개의 목록이 있으므로 이 comm명령을 사용하여 해당 목록 중 어느 것이 주어진 두 목록에 공통인지, 한 목록에는 표시되고 다른 목록에는 표시되지 않는지 선택할 수 있습니다.

프로세스 교체를 지원하는 셸을 사용하면 임시 파일 생성을 피할 수도 있습니다.

예를 들어:

#! /bin/bash -
comm -12 <(printf '%s\n' "$@" | sort -u) \
         <(ps -eo user= | sort -u)

라고 불리는:

./my-script root mythul stephane

3명의 사용자 중 누가 프로세스를 실행하고 있는지 보고합니다(시스템의 사용자 이름과 uid 사이에 일대일 관계가 있다고 가정).

관련 정보