[Linux] 프로세스 관련 명령어 훑기

HYEOB KIM·2022년 8월 19일
1

Linux

목록 보기
10/11

ps

ps : 현재 터미널에서 실행되는 프로세스 목록을 출력합니다.

$ ps
    PID TTY          TIME CMD
   1700 pts/0    00:00:00 bash
   2092 pts/0    00:00:00 ps

-f : 현재 터미널에서 실행되는 프로세스 목록의 더 많은 정보를 출력합니다.

$ ps -f
UID          PID    PPID  C STIME TTY          TIME CMD
pig         1700    1699  0 00:09 pts/0    00:00:00 bash
pig         2095    1700  0 05:06 pts/0    00:00:00 ps -f
  • UID : 사용자 아이디
  • PID : 프로세스 아이디
  • PPID : 부모 프로세스 아이디
  • C : CPU Usage(%)
  • STIME : 프로세스가 실행된 시간

-e : 모든 프로세스를 보여줍니다.

  • 프로세스 목록 중 CMD에 []로 묶여있는 것은 커널이 관리하는 쓰레드입니다(건드리면 큰일날 수도).
$ ps -ef
...
root        1790       2  0 01:03 ?        00:00:00 [kworker/0:0-events]
root        2037       2  0 04:17 ?        00:00:00 [kworker/u30:0-events_unboun
pig         2093    1700  0 05:06 pts/0    00:00:00 ps -ef
  • --forest : 프로세스들을 계층 형식으로 보여줍니다.
$ ps -ef --forest
root        1245     735  0 Aug18 ?        00:00:00  \_ sshd: ubuntu [priv]
ubuntu      1406    1245  0 Aug18 ?        00:00:00  |   \_ sshd: ubuntu@pts/0
ubuntu      1407    1406  0 Aug18 pts/0    00:00:00  |       \_ -bash
root        1699    1407  0 00:09 pts/0    00:00:00  |           \_ su pig
pig         1700    1699  0 00:09 pts/0    00:00:00  |               \_ bash
pig         2122    1700  0 05:25 pts/0    00:00:00  |                   \_ ps -ef --forest

자신이 실행한 명령(스크립트의 실행도 포함)은 bash의 자식 프로세스가 됩니다.

kill

-l : 모든 시그널 정보를 볼 수 있습니다.

$ 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
  • -15 : 프로세스를 정상 종료하는 옵션입니다.
  • -9 : 프로세스를 강제 종료하는 옵션입니다.
$ kill -9 <PID>
  • -6 : 코어 덤프파일(core)로 만들면서 프로세스 중지
    코어 파일을 분석하면 프로세스가 왜 종료되었는지에 대해서 분석할 수 있습니다.
# 코어 파일을 남길 것인지에 대한 설정
# 현재 core file size가 0으로 설정되어 있어 코어 파일이 남지 않는 설정 상태
$ ulimit -a
real-time non-blocking time  (microseconds, -R) unlimited
core file size              (blocks, -c) 0
data seg size               (kbytes, -d) unlimited
scheduling priority                 (-e) 0
file size                   (blocks, -f) unlimited
pending signals                     (-i) 3821
max locked memory           (kbytes, -l) 123888
max memory size             (kbytes, -m) unlimited
open files                          (-n) 1024
pipe size                (512 bytes, -p) 8
POSIX message queues         (bytes, -q) 819200
real-time priority                  (-r) 0
stack size                  (kbytes, -s) 8192
cpu time                   (seconds, -t) unlimited
max user processes                  (-u) 3821
virtual memory              (kbytes, -v) unlimited
file locks                          (-x) unlimited

$ ulimit -c 11111111

$ ulimit -a
real-time non-blocking time  (microseconds, -R) unlimited
core file size              (blocks, -c) 11111111
data seg size               (kbytes, -d) unlimited
scheduling priority                 (-e) 0
file size                   (blocks, -f) unlimited
pending signals                     (-i) 3821
max locked memory           (kbytes, -l) 123888
max memory size             (kbytes, -m) unlimited
open files                          (-n) 1024
pipe size                (512 bytes, -p) 8
POSIX message queues         (bytes, -q) 819200
real-time priority                  (-r) 0
stack size                  (kbytes, -s) 8192
cpu time                   (seconds, -t) unlimited
max user processes                  (-u) 3821
virtual memory              (kbytes, -v) unlimited
file locks                          (-x) unlimited

$ ./process.sh &

$ kill -6 2202
[2]+  Aborted                 (core dumped) ./process.sh

# 코어 파일이 생성됩니다.
$ ls
core process.sh

포그라운드 / 백그라운드 프로세스

# 백그라운드로 실행 방법
$ ./process.sh &

# 포그라운드로 전환 방법
$ fg

# 백그라운드로 전환 방법
# [Ctrl] + [Z] 후 bg
^Z
$ bg

현재 터미널의 백그라운드 프로세스 조회 명령어 : jobs -l

$ jobs -l
[1]   2297 Running                 ./process.sh &
[2]-  2299 Running                 ./process.sh &
[3]+  2301 Running                 ./process.sh &

fg 명령어 뒤에 백그라운드 프로세스의 번호를 붙이면 그 번호에 해당하는 프로세스가 포그라운드로 전환됩니다.

$ fg %2
^C

$ jobs -l
[1]-  2297 Running                 ./process.sh &
[3]+  2301 Running                 ./process.sh &
profile
Devops Engineer

0개의 댓글