Linux에서 온라인으로 사용자 수를 어떻게 찾을 수 있습니까?


10

Linux 컴퓨터에 몇 명의 사람들이 로그온했는지 어떻게 알 수 있습니까? 'users'명령에 로그인 한 모든 사람이 표시되지만 숫자가 필요하다는 것을 알고 있습니다. 매뉴얼 페이지에서 누락 된 사용자를위한 스위치가 있습니까? 나는 grep -c명령 을 사용하려고 생각 했지만 이것이 작동하려면 각 사용자 이름에 동일한 것이 있어야합니다. 더 쉬운 방법이 있습니까?

답변:


15

wc(단어 수) 명령을 찾고 있습니다.

이 시도:

users | wc -w

이 접근 방식 (who / w 솔루션)은 반드시 활성 사용자가 아닌 로그인 한 사용자 만 표시합니다 (즉, 프로세스를 시작한 다음 실행중인 프로세스를 그대로두고 로그 아웃 한 사용자). 차이점에 대해 간략히 설명하겠습니다.
estani

18

일반적으로 명령은 '사용자'가 아닌 '누가'이지만 '누가'는 더 많은 정보를 제공합니다. 원래 유닉스 기사 (70 년대 중반)를 되돌아 보면 그 예는 다음과 같습니다.

who | wc -l

'wc -l'을 사용하면 출력 행 수를 계산 합니다. 'users'와 'who' 모두에서 작동합니다 . '-w'는 사용자 당 하나의 단어가있을 때만 안정적으로 작동합니다 ( 'users'와 같지만 'who'는 아님).

'grep -c'를 사용하여 줄을 계산할 수 있습니다. 공백이 아닌 사용자 이름에만 관심이 있으므로 다음을 수행 할 수 있습니다.

who | grep -c .

각 줄에는 항상 하나 이상의 문자가 있습니다.


에서 언급 한 바와 같이 의견 에 의해 존 Tusers명령과 다른 who측면의 숫자입니다. 가장 중요한 것은 한 줄에 하나의 이름을 부여하는 대신 한 줄에 여러 개의 이름을 퍼뜨리는 것입니다. 사용자 수가 많아 질 때 발생하는 상황을 테스트하기 위해 충분히 다른 사용자가 로그인 한 시스템이 없습니다. 다른 차이점은 'who'는 사용중인 터미널 연결을보고한다는 것입니다. 여러 터미널 창을 열면 단일 사용자에 대해 여러 줄이 표시되지만 '사용자'는 로그인 한 사용자를 한 번만 나열하는 것 같습니다.

이 차이의 결과로 ' grep -c .'공식은 'users'명령과 작동하지 않습니다. ' wc -w'가 필요합니다.


small nitpick-users 명령은 사용자 당 한 줄을 인쇄하지 않고 순차적으로 id를 인쇄하므로 grep -c입니다. 이 경우에는 작동하지 않습니다. 똑똑한 생각.
John T

이것은 또한 wc -l이 여기에 표시된 것처럼 users 명령과 함께 작동하지 않음을 의미합니다. i26.tinypic.com/4pw0vd.png
John T

@ 존 T : 오-글쎄, 주어진 스크린 샷, 당신은 맞습니다. MacOS X에서 'users'를 테스트했지만 한 명의 사용자 만 로그인했습니다. 두 번째 사용자가 로그인 한 상태에서 두 번 체크인하면 'all on one line'동작이 나타납니다.
Jonathan Leffler

1
더 많은 사용자를 시뮬레이션하기 위해 자신의 상자에 SSH를 넣을 수 있습니다 :)
John T

"users"명령을 사용하고 싶었지만이 귀중한 정보에 감사드립니다. 감사합니다.

7

쉘을 열고 다음을 입력하십시오.

who -q

마지막 줄은 당신에게 카운트를 제공합니다.

편집하다:

(한숨) 나는 그 질문을 오해했다. 다소 무차별 접근 방식은 다음과 같습니다.

고유 한 사용자 이름을 보려면

who | awk '{ print $1 }' | sort | uniq

순 사용자 수를 보려면

who | awk '{ print $1 }' | sort | uniq | wc -l 

총 같은 사용자의 모든 로그인 수를 계산합니다.
hayalci

다시 편집을 확인하면 새로운 답변으로 해결할 수 있다고 생각합니다.
Avery Payne

이것은 여전히 ​​작동하지 않으며, uniq은 중복 된 연속 줄만 제거하므로 누가 먼저 출력을 정렬해야합니다.
theotherreceive

그것이 오전 1시에 답변을 게시 할 때 얻는 것입니다. (한숨) 고정.
Avery Payne

3

세션 수 또는 실제 사용자 수를 보시겠습니까?

$ who
andrew   tty1         2009-07-26 15:31 (:0)
andrew   pts/0        2009-07-27 00:11 (:0.0)
andrew   pts/1        2009-07-27 01:58 (:0.0)

그것은 내 랩톱에 있기 때문에 유일한 사용자이지만 3 번 로그온했습니다.

$ who | wc -l
3
$ users | wc -w
3

실제 사용자 수를 얻기 위해 이러한 중복 항목을 필터링하는 것은 매우 쉽습니다.

$ users | tr ' ' '\n' | sort -u 
andrew
$ users | tr ' ' '\n' | sort -u | wc -l
1

3

다음은 tink 의 훌륭한 awk 게시물의 bash 버전입니다 .

set $(users)
declare -A user
for u ; do ((user[$u]++)) ; done
for key in "${!user[@]}" ; do echo "$key: ${user[$key]}" ; done | column -t | sort -nk 2

좋아, 조금 더 길지만 이것을 찾을만한 가치가있었습니다 ... :).

테스트하는 동안 다음 시도 전에 수행하십시오.

shift $#                # clear positional parameters
unset user              # remove associative array variable

2

현재 로그인 한 사용자 수 :

who |cut -c 1-9 |sort -u |wc -l

계정 이름이있는 위의 부타 :

who |cut -c 1-9 |sort -u |tee /dev/tty |wc -l

1
who | cut --delimiter=' ' -f 1 | sort -u | wc -l

누가 목록을 인쇄하고 cut은 첫 번째 행을 제외한 모든 것을 제거하고 sort -u sort하여 중복을 제거하고 wc -l이 행을 계산합니다. 우분투 / bash에서 나를 위해 잘 작동합니다 :)


1

당신은 간단하게 사용할 수 있습니다 w( /usr/bin/w내 레드햇 기반 시스템) 또는 uptime그들은 로그인 한 사용자의 실제 수를 보여줍니다.

w :

                              v
 22:40:38 up 3 days, 22 min,  1 user,  load average: 0.02, 0.01, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
manuel   pts/0    pc-manuel        09:35    0.00s  0.07s  0.00s /usr/bin/screen -xRR

가동 시간 :

                              v
 22:39:18 up 3 days, 21 min,  1 user,  load average: 0.08, 0.02, 0.01

1

그리고 하나의 파이프 만 사용하는 방법 ...

users | awk '{for(i=1;i<=NF;i++){a[$i]++}}END{for(i in a){print i"\t"a[i]}}'

:}



0

언제든지 TOP이라는 유닉스 용 무료 도구를 다운로드 할 수 있습니다. 사용자 목록과 당시 시스템에서 수행중인 작업을 생성하며 실행중인 한 계속 업데이트됩니다.

http://www.unixtop.org/ 에 있습니다 .

많은 명령 행 스위치가 있으므로 원하는 정보를 추출 할 수 있습니다.


패키지에서 설치할 수있는 옵션은 없지만 기본적으로 top을 포함하지 않는 Linux 배포판을 아직 찾지 못했습니다.
theotherreceive

0
who | cut -d ' ' -f1 | uniq | wc -l

2
이것은 김의 대답에 약간의 변화가있는 것처럼 보이며 설명이 없습니다. 해당 답변에 대한 의견으로 더 적절할 수도 있습니다 (약간의 답변이 더 필요함). 각 답변은 이미 기여한 것과 실질적으로 다른 솔루션을 제공하는 것입니다.
fixer1234

-2

올바른 순서로 로그인 및 로그 오프 한 총 사용자 수를 찾는 경우 실행하는 가장 좋은 명령은

cat -n /etc/passwd

2
아니요, 그 명령이하는 일은 아닙니다. cat -n파일의 모든 줄을 인쇄하고 각 줄에 번호를 매 깁니다. 해당 시스템에 존재하는 사용자 목록이 표시되지만 로그인 정보가 많지 않습니다.
cpast
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.