Process

정승균·2020년 12월 11일
0

리눅스

목록 보기
11/29
post-thumbnail

Ⅰ. Process Status


1. 현재 세션의 프로세스

  • $ ps
PIDTTYTIMECMD
프로세스 id터미널 idCPU시간(누적 시간)command (프로세스 이름)
jsg@jsg-ubuntu:~/testdir$ ps
   PID TTY          TIME CMD
  2799 pts/4    00:00:00 bash
  4690 pts/4    00:00:00 ps

2. 시스템 전체 프로세스

  • $ ps -e
 jsg@jsg-ubuntu:~/testdir$ ps -e
   PID TTY          TIME CMD
     1 ?        00:00:03 systemd
     2 ?        00:00:00 kthreadd
     4 ?        00:00:00 kworker/0:0H
     ...
  4663 ?        00:00:00 kworker/1:0
  4707 ?        00:00:00 kworker/1:2
  4720 ?        00:00:00 kworker/u256:0
  4725 pts/4    00:00:00 ps

3. full-format

  • $ ps -f
UIDPPIDCSTIME
해당 프로세스의 소유권자부모 프로세스 IDCPU 사용량 (CPU시간/실제시간)프로세스 시작 시간
jsg@jsg-ubuntu:~/testdir$ ps -f
UID         PID   PPID  C STIME TTY          TIME CMD
jsg        2799   2113  0 Dec10 pts/4    00:00:00 bash
jsg        4813   2799  0 03:22 pts/4    00:00:00 ps -f

4. long-format

  • $ ps -l
FSPRINISZ
프로세스 플래그상태 코드실시간 우선순위나이스 우선순위프로세스 메모리 크기
jsg@jsg-ubuntu:~/testdir$ ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000   2799   2113  0  80   0 -  7740 wait   pts/4    00:00:00 bash
0 R  1000   4843   2799  0  80   0 -  9316 -      pts/4    00:00:00 ps

5. 사용자 지정 포맷

  • alias 를 통해 자신이 원하는 format으로 쉽게 볼수 있음

  • CPU 점유율 순으로 보기

jsg@jsg-ubuntu:~$ alias pscpu='ps -eo s,pid,ucmd:12,etime,pcpu,time,pmem,rss --sort=-time,-pcpu | head'
jsg@jsg-ubuntu:~$ pscpu
S    PID CMD              ELAPSED %CPU     TIME %MEM   RSS
S    937 Xorg            07:22:21  0.2 00:01:09  2.5 100448
R   1814 compiz          07:22:04  0.1 00:00:52  2.6 105420
S   2113 gnome-termin    07:21:17  0.1 00:00:46  0.9 37284
S   1835 vmtoolsd        07:22:04  0.1 00:00:33  0.8 34768
S    419 vmtoolsd        07:22:23  0.1 00:00:29  0.2 10196
S   1539 ibus-daemon     07:22:08  0.0 00:00:23  0.2  8632
S   1617 ibus-engine-    07:22:07  0.0 00:00:08  0.1  7592
S   1851 nautilus        07:22:04  0.0 00:00:07  1.6 67832
S   1846 gnome-softwa    07:22:04  0.0 00:00:06  2.9 119664
  • 메모리 점유율순으로 보기
jsg@jsg-ubuntu:~$ alias psmem='ps -eo s,pid,ucmd:12,etime,pcpu,time,pmem,rss --sort=-pmem,-rss | head'
jsg@jsg-ubuntu:~$ psmem
S    PID CMD              ELAPSED %CPU     TIME %MEM   RSS
S   1846 gnome-softwa    07:22:09  0.0 00:00:06  2.9 119664
S   1814 compiz          07:22:09  0.1 00:00:52  2.6 105420
S    937 Xorg            07:22:26  0.2 00:01:09  2.5 100448
S   1851 nautilus        07:22:09  0.0 00:00:07  1.6 67832
S   1826 evolution-ca    07:22:09  0.0 00:00:00  1.5 60460
S   1886 evolution-ca    07:22:08  0.0 00:00:00  1.2 51060
S   1973 evolution-ca    07:22:07  0.0 00:00:00  1.2 50100
S   1946 fwupd           07:22:08  0.0 00:00:01  1.0 40784
S   2113 gnome-termin    07:21:22  0.1 00:00:46  0.9 37284

Ⅱ. Kill


  • 프로세스에 시그널을 보내는 명령

1. kill 시그널 리스트

  • $ kill -l
jsg@jsg-ubuntu:~$ 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	

2. 주요 시그널

시그널영어설명
SIGHUPHang Up세션이 종료될 때(로그아웃 할시) 시스템이 내리는 시그널
SIGINTInterruptCtrl-C 를 통한 종료 요청 시그널
SIGKILLKill강제 종료 시그널
SIGSEGVSegment Violation메모리 침범이 일어날 때 시스템이 보내는 시그널
SIGTERMTerminate기본값, 종료 요청 시그널
SIGTSTPTemporary StopCtrl-Z 일시 중지 요청 시그널

3. 프로세스에 시그널 보내기

$ kill [option] pid

<terminal 1>
jsg@jsg-ubuntu:~$ man kill

<terminal 2>
jsg@jsg-ubuntu:~$ ps -e | grep man
   122 ?        00:00:00 charger_manager
  5390 pts/4    00:00:00 man
jsg@jsg-ubuntu:~$ kill 5390

# terminal 1이 Terminated라고 뜨는 것을 볼 수 있음

Job Control


1. 백그라운드 프로세스 목록

  • $ jobs
jsg@jsg-ubuntu:~$ sleep 60
[1]+  Stopped                 sleep 60

jsg@jsg-ubuntu:~$ sleep 120
[2]+  Stopped                 sleep 120

jsg@jsg-ubuntu:~$ sleep 180
[3]+  Stopped                 sleep 180

jsg@jsg-ubuntu:~$ jobs
[1]   Stopped                 sleep 60		# 1번 프로세스
[2]-  Stopped                 sleep 120		# 2번 프로세스 (- : + 이전 프로세스)
[3]+  Stopped                 sleep 180		# 3번 프로세스 (+: 최근 프로세스)

2. foreground process로 전환

  • $ fg %number
jsg@jsg-ubuntu:~$ fg %1
sleep 60

3. background process 진행시키기

  • $ bg %number
jsg@jsg-ubuntu:~$  bg %2
[2] sleep 120 &
jsg@jsg-ubuntu:~$ jobs
[1]+  Stopped                 sleep 60
[2]   Running                 sleep 120 &
[3]-  Stopped                 sleep 180

4. 명령어를 background로 실행

  • $ command &
jsg@jsg-ubuntu:~$ sleep 240 &
[4] 4119
jsg@jsg-ubuntu:~$ jobs
[1]+  Stopped                 sleep 60
[2]   Running                 sleep 120 &
[3]-  Stopped                 sleep 180
[4]   Running                 sleep 240 &

5. background process 종료시키기

  • kill %number
jsg@jsg-ubuntu:~$ kill %4
jsg@jsg-ubuntu:~$ jobs
[1]+  Stopped                 sleep 60
[2]   Running                 sleep 120 &
[3]-  Stopped                 sleep 180
[4]   Terminated              sleep 240

0개의 댓글