이 연재글은 Linux command 알아보기의 1번째 글입니다.

커서 이동

맨앞으로 : Ctrl+a, 맨뒤로 : Crtl+e

pwd : 현재 디렉터리 확인

$ pwd
/home/ubuntu

cd : 디렉터리 이동

# 계정의 home 디렉터리로 이동
$) cd or cd ~
# 루트 디렉터리로 이동
$) cd /
# 이전 디렉터리로 이동
$) cd -
# 상위 디렉터리로 이동
$) cd ..
# hellodir 디렉터리로 이동
$) cd /hellodir

dirname : 디렉터리 이름 구하기

$ dirname /var/log/nginx/access.log
/var/log/nginx

basename : 파일 이름 구하기

$ basename /var/log/nginx/access.log
access.log
$ basename /var/log/nginx/access.log .log
access

id : 현재 로그인한 id 정보를 확인

$ id
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev),110(lxd)

uname -a : 서버의 OS 정보를 출력

$ uname -a
Linux ip-172-26-11-44 4.4.0-1079-aws #89-Ubuntu SMP Tue Mar 26 15:25:52 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

cat /proc/cpuinfo : 서버의 CPU 정보를 출력

$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
stepping        : 2
microcode       : 0x41
cpu MHz         : 2400.072
cache size      : 30720 KB

cat /proc/meminfo : 서버의 Memory 정보를 출력

$ cat /proc/meminfo
MemTotal:         498372 kB
MemFree:           17220 kB
MemAvailable:      90228 kB
Buffers:           21324 kB
Cached:           150520 kB
SwapCached:            0 kB
Active:           388416 kB
Inactive:          27688 kB
Active(anon):     344528 kB
Inactive(anon):     6176 kB
Active(file):      43888 kB
Inactive(file):    21512 kB

locale : 지역 정보 조회

$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"

ps – 실행중인 프로세스 목록 조회

옵션

옵션내용
-a전체사용자 프로세스 출력
-e모든 프로세스 상태 출력
-r실행중인 프로세스 상태 출력
-u각 프로세스 사용자 및 사용시간 출력
-x제어 터미널이 없는 프로세스 출력
-l긴 포맷(자세한 내용)으로 표시
-f풀 포맷(모든 컬럼내용)으로 표시

필드별 항목

  • USER – 프로세스 사용자
  • PID – 프로세스 ID
  • PPID – 부모 프로세스 ID
  • %CPU – CPU 사용률
  • %MEM – 메모리 사용률
  • VSZ – 가상 메모리 사용량
  • RSS – 실제 메모리 사용량
  • TTY – Teletype. 프로세스가 수행되고 있는 제어 터미널. ‘?’는 제어 터미널에 연결되어있지 않음을 나타냄
  • STAT – 프로세스 상태( R : 실행 또는 실행대 / S : 수면 / I : 휴식 / T : 정지 / Z : 좀비프로세스 / D : 디스크 대기)
  • START, TIME – 프로세스가 시작된 시간
  • CMD(Command) – 실행된 프로세스명

ps -ef

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Apr07 ?        00:00:50 /lib/systemd/systemd --system --deserialize 25
root         2     0  0 Apr07 ?        00:00:00 [kthreadd]
root         3     2  0 Apr07 ?        00:00:08 [ksoftirqd/0]
root         5     2  0 Apr07 ?        00:00:00 [kworker/0:0H]
root         7     2  0 Apr07 ?        00:00:09 [rcu_sched]
root         8     2  0 Apr07 ?        00:00:00 [rcu_bh]
root         9     2  0 Apr07 ?        00:00:00 [migration/0]
root        10     2  0 Apr07 ?        00:00:07 [watchdog/0]
root        11     2  0 Apr07 ?        00:00:00 [kdevtmpfs]
root        12     2  0 Apr07 ?        00:00:00 [netns]
root        13     2  0 Apr07 ?        00:00:00 [perf]

ps -aux

$ ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  1.0 185332  5076 ?        Ss   Apr07   0:50 /lib/systemd/systemd --system --de
root         2  0.0  0.0      0     0 ?        S    Apr07   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Apr07   0:08 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   Apr07   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    Apr07   0:09 [rcu_sched]
root         8  0.0  0.0      0     0 ?        S    Apr07   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    Apr07   0:00 [migration/0]
root        10  0.0  0.0      0     0 ?        S    Apr07   0:07 [watchdog/0]
root        11  0.0  0.0      0     0 ?        S    Apr07   0:00 [kdevtmpfs]

프로세스 명으로 PID 알아내기

ps -ef | grep 프로세스명 | grep -v grep

$ ps -ef | grep httpd | grep -v grep
root     23969     1  0 Apr20 ?        00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 23970 23969  0 Apr20 ?        00:00:37 nginx: worker process

프로세스 cpu 사용률 확인

$ ps -C nginx -o user,pid,pcpu,pmem,vsize,size,etime,comm
USER       PID %CPU %MEM    VSZ  SIZE     ELAPSED COMMAND
root     23969  0.0  0.3 179612  2076  7-20:54:40 nginx
www-data 23970  0.0  1.3 180596  3060  7-20:54:40 nginx

PID로 프로세스 이름 알아내기

cat /proc/프로세스아이디/status | grep Name

$ cat /proc/23969/status | grep Name
Name:   nginx

kill – 프로세스 종료

시그널 종류

$ kill -l
1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

kill -15 pid : Terminate의 약자로 정상 종료 시그널 요청
kill -9 pid : 강제 종료 요청. kill -15로 몇번해도 죽지 않는 경우 사용.
kill -1 pid : 해당 pid 프로세스를 재시작.

top – 프로세스 목록을 CPU 사용률이 높은 것부터 출력

필드별 항목

  • PID : 프로세스 ID (PID)   
  • USER : 프로세스를 실행시킨 사용자 ID
  • PRI : 프로세스의 우선순위 (priority)
  • NI : NICE 값. 일의 nice value값이다. 마이너스를 가지는 nice value는 우선순위가 높음.
  • VIRT : 가상 메모리의 사용량(SWAP+RES)
  • RES : 현재 페이지가 상주하고 있는 크기(Resident Size)
  • SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합.
  • S : 프로세스의 상태 [ S(sleeping), R(running), W(swapped out process), Z(zombies) ]
  • %CPU : 프로세스가 사용하는 CPU의 사용율
  • %MEM : 프로세스가 사용하는 메모리의 사용율
  • TIME+ : 프로세스 시작된 이후 경과된 총 시간
  • COMMAND : 실행된 명령어
  • Load average (로드 애버리지) : 세 개의 숫자는 각각 1분, 5분, 15분 간의 평균 실행/대기 중인 프로세스의 수를 나타냄. uptime 명령어로도 확인할 수 있으며, 시스템 부하를 모니터링 할 수 있다. 숫자가 높을 수록 시스템에 부하가 있다는 것이다. load average 값은 CPU의 코어 수를 같이 확인해야 하며, 코어 수 보다 적으면 문제가 없다.
$ top
top - 13:53:04 up 20 days, 13:54,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 110 total,   1 running, 109 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.6 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   498372 total,    13396 free,   237284 used,   247692 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   157444 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
    1 root      20   0  185332   5072   3188 S  0.0  1.0   0:50.83 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:08.18 ksoftirqd/0
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    7 root      20   0       0      0      0 S  0.0  0.0   0:09.68 rcu_sched
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
    9 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
   10 root      rt   0       0      0      0 S  0.0  0.0   0:07.47 watchdog/0
   11 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs

top 실행후 옵션

  • shift + t : 실행된 시간이 큰 순서로 정렬
  • shift + m : 메모리 사용량이 큰 순서로 정렬
  • shift + p : cpu 사용량이 큰 순서로 정렬
  • shift + b : 상단의 uptime 및 기타 정보값을 블럭 선택해 표시
  • k : Process 종료  – k 입력 후 종료할 PID를 입력하고 signal을 입력하라 표시되면 9를 넣어준다.
  • c  : 명령 인자 표시 / 비표시
  • l : uptime line(첫번째 행)을 표시 / 비표시
  • space bar : Refresh
  • u : 입력한 유저 소유의 Process만 표시 .which user유저를 입력하라 표시될때 User를 입력. blank(공백) 입력시 모두 표시
  • : 화면에 표시될 프로세스 관련 항목 설정
  • i : idle 또는 좀비 상태의 프로세스는 표시 되지 않음
  • z : 출력 색상 변경
  • d [sec] : 설정된 초단위로 Refresh
  • : command뒤에 인자값 표시
  • q : top 종료
연재글 이동
[다음글] Linux Command – touch, mkdir, rm, cp, mv, du, df