Linux – Process

1. 프로세스란?

  • 실행중인 프로그램을 프로세스라고 부름
  • 하나의 프로그램에서 여러개의 프로세스 실행이 가능
  • 리눅스 커널은 프로세스를 process id로 구분


 
 
 
 
 
 
 
 
 
 
 
 


 
 

2. 부모-자식 프로세스 관계

  • 모든 프로세스는 부모 프로세스로부터 파생
  • init 또는 systemd가 대부분의 프로세스의 최상위 부모
  • 자식은 부모 종료 시 init이 대신 관리
  • 부모 PID: PPID : parent pid
Bash
ps -eax -o pid,ppid,cmd
Bash


 
 
 
 
 
 
 
 
 
 
 
 
 

3. 프로세스 관련 명령

  • ps : process status
Bash
ps
ps aux          # 모든 사용자의 프로세스 보기
ps -ef          # 전체 포맷 출력
Bash
Bash
$ ps -eaf
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 Apr28 ?        00:00:59 /sbin/init
root           2       0  0 Apr28 ?        00:00:00 [kthreadd]
root           3       2  0 Apr28 ?        00:00:00 [rcu_gp]
root           4       2  0 Apr28 ?        00:00:00 [rcu_par_gp]
root           5       2  0 Apr28 ?        00:00:00 [slub_flushwq]

root         928       1  0 Apr28 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd.conf
Bash
  • pstree
Bash
pstree
pstree -p
Bash
Bash
$ pstree -p
systemd(1)─┬─ModemManager(973)─┬─{ModemManager}(1013)
                              └─{ModemManager}(1034)
           ├─agetty(974)
           ├─containerd-shim(2237)─┬─sh(2307)───npm run 
           
......
           
           ├─systemd(286541)───(sd-pam)(286542)
           ├─systemd-journal(518)
           ├─systemd-logind(908)
           ├─systemd-network(864)
           ├─systemd-resolve(866)
           ├─systemd-timesyn(812)───{systemd-timesyn}(820)
           ├─systemd-udevd(564)
           ├─thermald(913)───{thermald}(983)
           ├─udisksd(914)─┬─{udisksd}(950)
                         ├─{udisksd}(954)
                         ├─{udisksd}(1029)
                         └─{udisksd}(1107)
           ├─unattended-upgr(1000)───{unattended-upgr}(1075)
           ├─upowerd(9078)─┬─{upowerd}(9080)
                          └─{upowerd}(9081)
           └─vsftpd(928)
Bash
  • kill : 프로세스로 시그널 보내기
Bash
kill -9 pid
Bash
  • top : 프로세스 목록을 실시간 모니터링
Bash
top
Bash
  • pidof : 프로세스이름으로 PID찾기
Bash
pidof nginx               # nginx 프로세스 PID 찾기
ps -eaf | grep nginx      # nginx 프로세스를 문자열로 필터
Bash
  • 터미널에서 단축키 사용
    • Ctrl + z,
    • jobs
    • bg : switch to background
    • fg : switch to foreground


 
 


 
 


 
 


 
 


 
 


 
 

4. 프로세스 권한

  • 리눅스에서 각 프로세스는 User와 Group속성을 가짐
  • 이러한 정보는 커널이 다음을 판단하는 데 사용:
    • 어떤 자원(파일, 디바이스, 포트 등)에 접근 가능한가
    • 어떤 프로세스를 제어(kill, attach 등)할 수 있는가
  • root 계정의 쉘 프롬프트는 #
  • 일반 계정의 쉘 프롬프트는 $


 
 


 
 
 
 
 
 
 
 
 
 

5. 프로세스 권한 관련 명령

  • ps로 권한정보 조회
Bash
ps -o pid,user,uid,euid,egid,cmd -p PID
Bash
  • id, whoami
Bash
id
whoami
Bash


 
 


 
 

6. su, sudo

  • su : run a command with substitute user and group ID
Bash
su - danny
su -l
Bash
  • sudo : execute a command as another user
Bash
sudo vi /etc/shadow
sudo su -
Bash

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다