[네이버클라우드] AIaaS 개발자 과정/Linux

[네이버클라우드캠프] 2023.4.28 Linux(1) - Process 관리 , 리눅스 부팅과 커널의 이해

_꼬마돌 2023. 4. 30. 22:24
반응형

Process 관리

Process

리눅스 시스템은 한 마디로 Multi-user, Multi-tasking System이다.
즉 여러 사람이 동시에 시스템에 접속하여 동시에 여러 가지 일들을 처리할 수 있는 시스템이며, 
여기서 여러가지 일, 작업, Task 등이 바로 Process이다.

PID: process id. 프로세스 식별을 위한 운영체제 차원에서 부여한 고유번호.

 

R : run 실행중
S : sleep 잠시 잠들어 있는 상태 (20초 이내)
I : idle 유효상태 (20초 이상)
Z : 좀비 process
D: Disk 입출력 대기 상태

 

# 현재 실행중인 프로세스 보기
root@kwc:~# ps
    PID TTY          TIME CMD
   1264 pts/2    00:00:00 sudo
   1265 pts/2    00:00:00 bash
   7470 pts/2    00:00:00 ps

# 전체 프로세스 정보 보기
root@kwc:~# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 10:30 ?        00:00:00 /sbin/init
root           2       0  0 10:30 ?        00:00:00 [kthreadd]
root           3       2  0 10:30 ?        00:00:00 [rcu_gp]
root           4       2  0 10:30 ?        00:00:00 [rcu_par_gp]
root           5       2  0 10:30 ?        00:00:00 [slub_flushwq]
root           6       2  0 10:30 ?        00:00:00 [netns]
root           8       2  0 10:30 ?        00:00:00 [kworker/0:0H-events_highpri]
...

# http가 실행중인지 검색
root@kwc:~# ps -ef | grep http
root        7475    1265  0 12:32 pts/2    00:00:00 grep --color=auto http

# bash가 실행중인지 검색
root@kwc:~# ps -ef | grep bash
j           1055     718  0 10:30 tty1     00:00:00 -bash
root        1074    1073  0 10:30 pts/0    00:00:00 -bash
j           1254    1253  0 10:54 pts/1    00:00:00 -bash
root        1265    1264  0 10:54 pts/2    00:00:00 -bash
root        7477    1265  0 12:33 pts/2    00:00:00 grep --color=auto bash

# 사용 가능한 모든 시그널 목록 보기
root@kwc:~# 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

root@kwc:~# top       # table of process 실행중인 프로세스들과 시스템 리소스 사용량 등의 정보를 실시간으로 확인

윈도우의 작업관리자와 비슷하다.

# pstree: process tree 실행중인 프로세스들을 계층 구조로 트리 형태로 출력
root@kwc:~# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─cron
        ├─dbus-daemon
        ├─irqbalance───{irqbalance}
        ├─login───bash───sudo───sudo───bash
        ├─multipathd───6*[{multipathd}]
        ├─networkd-dispat
        ├─packagekitd───2*[{packagekitd}]
        ├─polkitd───2*[{polkitd}]
        ├─rsyslogd───3*[{rsyslogd}]
        ├─snapd───10*[{snapd}]
        ├─sshd───sshd───sshd───bash───sudo───sudo───bash───pstree
        ├─systemd───(sd-pam)
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-network
        ├─systemd-resolve
        ├─systemd-timesyn───{systemd-timesyn}
        ├─systemd-udevd
        ├─udisksd───4*[{udisksd}]
        └─unattended-upgr───{unattended-upgr}

# jobs 백그라운드 job 보기
root@kwc:~# jobs
[1]+  Stopped                 cat

# 상세히 보기
root@kwc:~# jobs -l 
[1]+  7983 Stopped                 cat

Linux 부팅과 커널의 이해

리눅스 부팅 순서

1. Power On
2. ROM-BIOS
3. 부트 매니저 (GRUB)
4. 커널 로드
5. 파일 시스템
6. 파일 시스템 마운트
7. 시스템 초기화 (init, systemd)
8. 로그인

 

부팅시 파일 실행 순서

0. pweroff.target       - halt
1. rescue.target        - single user mode
2. multi-user.target   - Network service 없는 CLI
3. multii-user.target  - CLI 정상적으로 사용
4. Not used              - 사용하지 않음. 
5. graphical.target    - GUI 3 + 그래픽 환경
6. reboot.target        - 시스템 재부팅

 

Root password 분실 시 복구 방법

부팅할 때 Shift + ESC를 누른 후 e 선택하여 EDIT 모드로 진입.
linux 라인 끝에 ro 다음 init=/bin/bash 추가
^X 눌러 저장 (Ctrl + x)
#passwd  // 새로운 비밀번호 입력
#reboot -f

 

커널 보기

root@kwc:~# cd /boot  
# /boot 디렉터리에는 일반적으로 부팅에 필요한 커널 이미지 파일과 부트 로더 관련 파일들이 저장되어 있음.

root@kwc:/boot# uname -r
5.15.0-71-generic
# /boot 디렉터리 안에서 uname -r 명령어를 실행하면 현재 사용중인 Linux 커널의 버전이 출력됨.

root@kwc:/boot# file /boot/vmlinuz-5.15.0-71-generic
/boot/vmlinuz-5.15.0-71-generic: Linux kernel x86 boot executable bzImage, version 5.15.0-71-generic (buildd@lcy02-amd64-044) #78-Ubuntu SMP Tue Apr 18 09:00:29 UTC 2023, RO-rootFS, swap_dev 0XB, Normal VGA
root@kwc:/boot#

 

리눅스의 구조


반응형