우분투 접속중인 유저 모니터링 하기
OverView
우분투 시스템 내 유저들을 모니터링 하는 명령어들입니다.
- who
- w
- users
[root@localhost ~]# who -aH
NAME LINE TIME IDLE PID COMMENT EXIT
system boot 2023-03-16 23:22
run-level 3 2023-03-16 23:22
root + tty1 2023-03-17 02:15 01:13 667
test + pts/0 2023-03-17 23:52 02:02 15151 (gateway)
[root@localhost ~]# w
01:54:35 up 1 day, 2:32, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 금02 1:13m 0.08s 0.02s bash
test pts/0 gateway 23:52 2:02m 0.00s 0.00s -bash
[root@localhost ~]# users
root test
who와 w 출력 결과는 공통되는 내용이 많습니다. (내용이 적은 users
는 논외)
공통 부분
- 접속중인 유저 목록 (USERNAME)
- 접속중인 유저가 사용하는 터미널 (TTY)
- 시스템 부팅 시간(system boot)
- 터미널과 상호작용한 마지막 시간 (IDLE)
- 마지막 터미널 사용 시간
차이점
who | w | |
---|---|---|
용도 | (프로세스 관리 관점) 접속한 유저가 무슨 pid로 접속했는지 확인할 때 | (시스템 관리 관점)어느 유저가 시스템 부하가 심한지 모니터링 할 때 |
차이점 | run level(부팅모드) 터미널 PID |
시간당 시스템 평균 부하 터미널에서 실행한 프로세스들의 cpu 사용시간(JCPU) |
who
who 명령은 다음 정보를 찾는 데 사용됩니다.
- 마지막 시스템 부팅 시간
- 시스템의 현재 실행 수준(Run level)
- 로그인한 사용자 목록
who [OPTION]... [ FILE | ARG1 ARG2 ]
-H
옵션으로 행 이름을 볼 수 있습니다.
-b
는 시스템이 마지막으로 부팅된 시간을 보여줍니다
[root@localhost ~]# who
root tty1 2023-03-17 02:15
test pts/0 2023-03-17 23:52 (gateway)
[root@localhost ~]# who -H
NAME LINE TIME COMMENT
root tty1 2023-03-17 02:15
test pts/0 2023-03-17 23:52 (gateway)
[root@localhost ~]# who -b
system boot 2023-03-16 23:22
| –> |
w
접속한 유저 리스트와 시스템 부하를 확인할 때 유용한 명령어입니다.
w
명령어 출력 결과는 헤더 정보와 바디 정보로 나눠집니다.
# 현재 시간 비교용
[root@localhost ~]# date
2023. 03. 18. (토) 01:20:06 KST
[root@localhost ~]# w
01:20:07 up 1 day, 1:58, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 금02 39:11 0.08s 0.02s bash
test pts/0 gateway 23:52 1:28m 0.00s 0.00s -bash
헤더에는 시스템 사용량에 대한 전체 통계 정보와 유저 데이터 속성명을 나타냅니다.
- 현재 시간
- 시스템이 부팅된 시간
- 접속 중인 유저 수
- 시스템 부하 평균 (1, 5, 15분)
의미 | 현재 시각 | 부팅 후 지난 시간 | 접속한 유저 수 | 평균 부하, 1분, 5분, 15분 |
---|---|---|---|---|
예시 | 01:20:07 | up 1 day, 1:58, | 2 users, | load average: 0.00, 0.01, 0.05 |
특이하게 헤더가 기본으로 출력되고 -h
를 사용하면 출력되지 않습니다.
바디 정보는 유저별 사용량 정보를 나타냅니다.
- 유저 이름
- tty 이름
- 원격 호스트
- 로그인 시간
- 유휴 시간
- JCPU : tty에서 시작된 모든 프로세스들이 사용한 시간 집계
- PCPU :
what
프로세스가 사용한 시간 - what : w 명령어를 실행시킨 프로세스 (주로 쉘, bash)
유너 네임 | 터미널 이름 | 원격 호스트 | 로그인 유지 시간 | 유휴 시간 | JPCU | PCPU | what process |
---|---|---|---|---|---|---|---|
USER | TTY | FROM | LOGIN@ | IDLE | JCPU | PCPU | WHAT |
root | tty1 | 금02 | 39:11 | 0.08s | 0.02s | bash | |
test | pts/0 | gateway | 23:52 | 1:28m | 0.00s | 0.00s | -bash |
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 금02 39:11 0.08s 0.02s bash
test pts/0 gateway 23:52 1:28m 0.00s 0.00s -bash
-i
패킷의 소스를 ip 주소로 나타냅니다.
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 금02 33:43 0.08s 0.02s bash
test pts/0 10.0.2.2 23:52 1:22m 0.00s 0.00s -bash
$users
접속 중인 유저들의 호스트 네임만 출력하는 간단한 명령어입니다. 접속 중인 유저들을 대상으로 파이프라인을 동작시킬 때 사용하기 좋습니다.
[root@localhost ~]# users
root
Command (접속한 본인 계정 조회)
본인이 사용 중인 계정의 정보를 출력하는 명령어들입니다.
$whoami
사용중인 계정의 hostname을 출력합니다. 쉘에서도 호스트네임을 확인할 수 있어 사용처가 모호할 수 있는데, stdout 으로 출력해서 파이프라인에서 사용할 때 활용합니다.
[root@localhost ~]# whoami
root
$id
사용중인 계정 정보를 출력합니다. UID, GID, groups 같은 정보를 볼 수 있어 whoami 보다 유용합니다.
Command (시스템 내 계정 관리)
$lslogins
시스템내의 계정 정보들의 접속기록을 확인, 관리하는 명령어입니다. 로그 파일들(wtmp, btmp), 계정 정보(/etc/shadow, /etc/passwd)를 바탕으로 데이터를 출력합니다.
lslogins [options] [-s|-u[=UID]] [-g groups] [-l logins]
Hostname이나 UID만 넣으면 해당 유저의 관련 정보와 최근 로그를 함께 볼 수 있습니다.
필터링 옵션
-s
-u
옵션으로 uid가 1000이 넘는 시스템 계정과 그렇지 않은 유저 계정만을 필터링해서 볼 수 있습니다.
-g
그룹에 속하는 유저만 확인합니다.
필드 옵션
옵션 | 내용 |
---|---|
-f | 실패 기록을 출력 |
출력 포맷 옵션
옵션 | 내용 |
---|---|
-c | delimeter를 colon으로 출력 |
Leave a comment