[Linux] 명령어 3

zzwon1212·2023년 9월 21일
0

Linux

목록 보기
4/11

프로세스 관련 명령어

1. ps

  • ps: 내 세션에 속한 프로세스만 출력
    • PID: Process ID
    • TTY: Terminal ID
    • TIME: CPU를 점유했던 누적 시간
    • CMD: Command. 프로세스 이름
  • ps -e: all process
  • ps -a: all process except both session leaders and processes not associated with a terminal(관리자가 자주 사용)
  • ps -f: full format
    • UID: User ID. 해당 프로세스의 소유권자 ID
    • PPID: Parent PID
    • C: CPU 사용량(현재 사용량이 아닌 누적된 수치의 퍼센트). CPU TimeElapsed Time×100\frac{CPU \ Time}{Elapsed \ Time} \times 100
    • STIME: 프로세스를 시작한 시간
  • ps -l: long format
    • F: 프로세스 플래그
    • S: state(상태) code. Sleep과 Run 등이 있음.
    • PRI: realtime priority. 실시간 우선순위
    • NI: nice. 나이스 우선순위. 범위는 -20~19, 기본값은 0이며 음수일수록 우선순위가 높다.
    • SZ: 사용되는 프로세스 코어 이미지의 메모리 크기(KB)
  • ps -eo: 자주 쓰는 조합
ps -ef | grep bash

2. kill

  • 프로세스에 시그널을 보내어 해당 프로세스를 제어한다.

  • kill [OPTIONS] [PID]

  • 아래는 주요 시그널의 종류이며, kill -l로 사용 가능한 시그널의 종류를 확인할 수 있다.

    번호시그널기능
    1SIGHUPHang Up
    2SIGINTInterrupt <CTRL-C>
    3SIGQUITQuit <CTRL-\>
    6SIGABRT
    9SIGKILLKill
    10SIGUSR1
    11SIGSEGVSegment Violation
    12SIGUSR2
    15SIGTERMTerminate
    18SIGCONT
    19SIGSTOP
    20SIGTSTPTemporary Stop <CTRL-Z>
  • 명령어 예시

    kill 13011 # PID 13011 프로세스에 SIGTERM(default) 시그널을 보낸다.
    kill -QUIT 13013 # PID 13013 프로세스에 SIGQUIT 시그널을 보낸다.
    kill -9 13012 # PID 13012 프로세스에 9번(SIGKILL) 시그널을 보낸다.
    # 1번 터미널
    less ~/.bashrc
    # 2번 터미널
    ps -e | grep less
    kill [less의 PID] # → less 프로세스가 종료된다.

3. job control

  • fore-ground process: 현재 session에서 제어 터미널을 가진 프로세스
  • back-ground process: 현재 session에서 제어 터미널을 잃은 프로세스
  • CTRL-Z: SIGTSTP 시그널을 fore-ground 프로세스에 전달하여 back-ground에서 stop된 상태가 된다.
  • Session: 이해가 안 되면 외워라. 더 배우다보면 이해가 될 수 있다.
    • 멀티 유저 시스템에서 통신 객체를 구별하기 위함.
    • Session Leader: SID == PID인 프로세스
      • Process Group Leader를 겸한다.
      • 파생된 Child Process는 모두 같은 세션을 가진다.
        • 세션에 속한 제어 터미널을 1개 소유할 수 있다 == fore-ground process
        • logout 시 세션이 파괴되며 세션에 속한 모든 프로세스가 종료된다.
  • 제어 터미널(Controlling Terminal)
    • 사용자의 제어(키보드 입력 등)를 받는 터미널 장치
    • CUI에서 멀티 태스킹을 위한 제어 방법
    • 제어 터미널을 소유한 프로세스는 키보드 입력을 가지며, 이러한 프로세스를 fore-ground라고 부른다.
    • Quiz: 하나의 Session에서 fore-ground process는 최대 몇 개까지 가능한가? 1개
    • 규격: ps 명령어의 출력에서 TTY를 보면 2가지 방식으로 출력된다.
      • pts/#: UNIX98 Pseudo terminal system
      • tty#: console terminal
    • 세션에서 제어 터미널을 가지지 않는 경우(백그라운드에서 작동하는 서버 시스템), ps의 TTY에 ?로 출력된다.
    • process group
      kill -USR1 -[PID]: 음수의 PID는 프로세스 그룹에 시그널을 보낸다.
  • commands
    • jobs: stoped, back-ground process 리스트를 출력한다.
    • fg %#: #은 jobs의 작업 번호. 지정한 프로세스를 fore-ground로 가져온다.
    • bg %#: 정지된 백그라운드 프로세스를 back-ground에서 running 상태로 변경한다.
    • command &: command를 back-ground에서 running 상태로 실행시킨다.

📙강의 - 코인즈월렛 기술이사 김선영

profile
JUST DO IT.

0개의 댓글

관련 채용 정보