Commend Line - Process

정소원·2023년 5월 1일
0

Command Line

목록 보기
6/6

Process

ps

ps [option]: process status

  • 현재 세션의 프로세스들을 보여줌
  • PID : process ID
  • TTY : terminal ID
  • TIME : cpu 점유(누적 사용) time (현실 시간은 ETIME)
  • CMD : process 실행 명령어 (첫번째 인수, argv[0])

option

  • -e : select all process
  • -a : 특정 조건 제외하여 보여줌 = 세션 리더격만 확인하는 코드 (향후 다룸)
  • -f : full-format
  • -l : long-format (시스템 관리용)
  • -el: all, long
  • -ef: all, full
  • -ej: all, jobs
  • -eo: ?
  • axf: “-” 기호 없음, BSD style (UNIX 표준화 후 여러 종류의 옵션을 지원하기 시작함)

full-format

  • UIP : user ID, 프로세스의 소유권자
  • PPID : parent PID (프로세스 생성 시 부모-자식과 같은 계층 프로세스가 만들어짐)
  • C : CPU 사용량
  • STIME : 프로세스를 시작한 realtime 시간 (시:분)

long-format ?

  • F: 프로세스 플래그
  • S: 상태 코드 (S: sleep, R: )
  • PRI : 실시간 우선순위
  • NI : 나이스 우선순위
  • SZ : 메모리 크기

grep

  • ps [option] | grep [commend]
  • commend 명령을 실행한 프로세스만 표시

Process Control

kill

  • 프로세스를 죽이는 명령어? No!
  • UNIX의 kill은 이름을 잘못 지은 케이스다
  • 시그널을 전송하는 기능

option

  • -l : 사용 가능한 시그널 리스트 확인 기능

signal

  • SIGHUP : [-HUP] signal hagn up → 끊다, 연결이 끊어졌을 때 보내짐
  • SIGINT : [-INT] signal interrupt → 키보드 입력시 발생
  • SIGQUIT : [-QUIT] signal quit → <CTRL-> 시스템이 이상할 때 종료하고 덤프로 확인(?)
  • SIGTERM : [-TERM, 15]죽어달라고 요청하는 신호
  • SIGKILL : [default] signal kill → 죽어달라고 프로세스에 요청하는 대신 프로세스를 강제로 죽임. SIGTERM에 응답이 없을 시 최후의 수단으로 사용
  • SIGSEGV : [-SEGV] signal segment violation → 허용되지 않은 방법으로 메모리 침범 시도시 발생하는 시그널. 세그폴트
  • SIGTSTP : [-TSTP] signal Temporary Stop 잠시 정지

job control

controlling terminal

사용자의 제어(키보드 입력)를 받는 터미널 장치

  • CUI (console user interface)에서 멀티 테스킹을 위한 제어 방법
  • 제어 터미널을 소유한 프로세스 (=fore-ground process) 는 키보드 입력을 가진다.
  • 하나의 세션에서는 하나의 제어 터미널을 가질 수 있다.

규격

→ ps 명령어 출력의 TTY 필드에 표기

  • pts/# : UNIX98 Pseudo terminal system (가상 터미널)

  • tty# : console terminal (진짜 사용자 입력을 받는 콘솔 터미널 <CTRL-ALT-F#> 로 전환 : tty3, tty2…)

  • ? : 제어 터미널을 가지지 않는 경우

  • 참고: 규격의 발전

    • 1998 SUSv2 (표준)
    • 1995 SUSv1
    • 1988 SVR4 (현대 UNIX의 모태)

fore/back-ground process

  • fore-ground process
    • 현재 session에서 제어 터미널(controlling terminal)을 가진 프로세스
  • back-ground process
    • 현재 session에서 제어 터미널(controlling terminal)을 잃어버린 프로세스
  • CTRL-Z 시 변화
    • SIGTSTP 시그널을 fore-ground 프로세스에 전달
    • 작동 : 잠시 정지 시킴 = back-ground에 Stopped 상태로 전환됨

session ?

멀티 유저 시스템에서 통신 객체 (seat or remote)를 구별하기 위함

  • 제어 터미널을 가질수도 안가질 수도 있다
  • 시스템 접근 시 터미널에서 작업할 때 작업 공간을 만든 것 자체 = 세션을 받았다
  • SID (session ID) == PID (process ID) 인 process = Session Leader
    • Process Grop Leader를 겸한다
    • Session Leader로 부터 파생된 자식 프로세스는 모두 같은 세션을 가진다.
    • 이는 접속(세션 생성) 후 해당 프로세스가 어디서 유래했는지 추적인 가능하기 때문에 중요한 의미를 가짐

prosess group

세션이 만들어진 후 내린 명령으로 실행된 프로세스들의 계층

음수 번호로 적힌 프로세스 아이디 = 프로세스 그룹 아이디

commands

jobs, fg %#, bg %#, command &

jabs : stoped, back-ground process의 리스트 출력

fg %#: jobs의 작업 번호 입력 → 지정한 process를 fore-ground로 전환, 실행

bg %#: jobs의 작업 번호 입력 → 정지된 process를 back-ground에서 실행

command &: back-ground에서 running 상태로 실행

profile
성장지향형 자율주행 소프트웨어 개발자입니다. K-Digital-Training: 자율주행 데브코스 Planning & Control 1기로 활동하고 있습니다. 본 블로그를 통해 배움기록을 실천하고 있습니다. #자율주행 #기계공학

0개의 댓글