16일차

장민우·2024년 4월 17일
  • 파이프(|) : 선행 명령어의 실행 겨로가를 다음 프로세스의 표준 입력으로 전달하는 것
    $COMMAND1 | COMMAND2

프로세스


  • 프로그램 : 기계어 코드를 포함하는 실행 바이너리 파일

  • 프로세스 : 프로그램이 메모리에 적재되어 실행되는 상태의 프로그램

  • 프로세스 분류

항목설명
부모프로세스다른 프로세스를 생성 할 수 있는 프로세스
자식프로세스부모 프로세스로부터 만들어지는 프로세스
데몬프로세스일반적으로 사용자가 직접 실행 시키지 않고, 커널에 의해 구동되며 백그라운에서 특정 서비스를 제공하기 위해 구동됩니다. 파일이름의 끝에 d를 붙여서 사용하는 것이 일반적으로 웹서비스의 경우는 httpd 데몬을 실행하여 서비스를 시작한다.
고아프로세스자식 프로세스는 작업 종료되면 부모 프로세스로 되돌아가는데, 되돌아가기 전에 부모 프로세스가 종료된 경우를 말하며 고아 프로세스는 init 프로세스가 해당 프로세스가 종료 될 수 있도록 해준다.
좀비프로세스Defunct 프로세스라고도 알려져 있으며, 자식 프로세스가 종료를 위해 프로세스 리스트라 불리우는 목록에서 종료 승인을 대기하고 있는 상태에 있는 프로세스로, 시스템에 존재하는 리소스를 반납하지 않은 상태로 리스트에 남아 있는 프로세스를 의미합니다. 즉, 이미 종료된 프로세스지만, 리소스 반환을 하지 못한 상태로 남아 있는 프로세스
  • PID(Proccess ID) : 프로세스가 생성되어 실행될 때 운영체제로부터 할당 받는 프로세스의 고유한 ID

  • PPID(Parent PID) : 부모 프로세스의 PID

  • 프로세스 목록 확인

$ps[OPTION] - 터미널에서 실행하고 있는 현재 사용자의 프로세스 목록 출력

$ps-ef - 시스템에서 실행 중인 모든 프로세스 목록 출력(System V 계열 유닉스 옵션 형식)

$ps aux - 시스템에서 실행 중인 모든 프로세스 목록 출력(BSD 계열 유닉스 옵션 형식)

  • Linux Process 상태
이름Status         
Flag
설명
실행RTASK_RUNNING 프로세스가 실행 중 또는 실행 큐에 존재함
유휴 상태STASK_INTERRUPTABLE 프로세스가 하드웨어 요청, 시스템 리소스 접근, 시그널 등 일부 조건을 기다림, 시그널 수신시 R 상태로 복귀
유휴 상태DTASK_UNINTERRUPTABLE 시그널을 받아들이지 않는 상태. 프로세스 중단이 예기치 않은 장치 상태를 만드는 특정한 상황에서 사용됨
유휴 상태KTASK_KILLABLE D 상태와 동일하지만 대기 중인 작업이 완전히 종료될 때 시그널을 받아들임.
중지TTASK_STOPPED 사용자 또는 다른 프로세스에 의해 시그널을 받아서 프로세스가 중지된 상태 다른 시그널을 수신해 프로세스가 재개될 수 있음.
중지TTASK_TRACED 디버깅 되는 프로세스가 일시적으로 중지된느 상태
ZombieZEXIT_ZOMBIE
Zombie          XTASK_DEAD 부모 프로세스가 자식 프로세스의 구조를 정리(reap)하게 되면 프로세스가 릴리즈 됨. 프로세스 관리 명령어(ps 등)에서 관찰되지 않는 상태
  • 실시간으로 프로세스를 모니터링
    $top

  • 시스템의 부팅시간, 부하 평균 값확인
    $uptime


프로세스 실행 방식


  • Foreground Process
    - 프로세스 실행시 실행 과정이 보이도록 실행되는 프로세스
    - 프로세스는 제어 터미널을 가지며 새로운 프로세스 실행시 프로세스가 종료될 때까지 터미널의 제어권을 가짐. ex) $gedit /etc/hosts

  • Backgournd Process
    - 프로세스 실행시 실행 과정이 화면에 보이지 않도록 실행되는 프로세스
    - 새로운 프로세스가 실행된 즉시 터미널의 제어권을 부모 프로세스에 반환함 ex) $gedit /etc/hosts&

JOB Control


  • JOB : 터미널에서 실행 중인 프로세스

fg%JOB_ID : 프로세스를 Foreground로 실행
bg%JOB_ID : 프로세스를 Background로 실행

fg %2 로 실행하면 Foreground로 실행되어 다른 걸 제어할 수 없으므로 Cltrl + Z(^Z)로 멈춰준거임.

프로세스에 시그널 전달


$kill [OPTION]...[SIGNAL] PID
PID를 지정하여 특정 프로세스에 시그널을 전달하는 명령어

일반적인 형태
$kill -s SIGNAL PID
$kill SIGNAL PID

시그널 : 프로세스 동작을 제어하는 명령어

시그널 이름시그널 번호설명
SIGHUP1프로세스가 종료되지 않고 설정 파일을 다시 로드.(Hang up)
SIGINT2프로세스 종료([Ctrl]+[C]), 프로세스가 무시할 수 있음.(Interrupt)
SIGQUIT3프로세스 종료([Ctrl]+[/]), 프로스세가 무시할 수 있음. 프로세스 덤프 생성.
SIGKILL9프로세스 강제 종료, 프로세스가 무시할 수 없음.(Kill)
SIGTERM15프로세스 정상 종료, 프로세스가 무시할 수 있음.(Terminate)
SIGCONT18프로세스 동작 재개
SIGSTOP19프로세스 중지. 프로세스가 무시할 수 없음.
SIGTSTP20프로세스 중지([Ctrl]+[Z]). 프로세스가 무시할 수 있음.
  • 프로세스 이름을 지정하여 시그널 전달
    killall -s SIGNAL PROCESS_NAME

  • 프로세스 이름을 지정하여 시그널 전달
    pkill SIGNAL PROCESS_PATTERN

    -p PPID
    -t TERMINAL


    3303은 sleep1000,2000,3000의 bashshell을 가리킴.


pts/1은 다른 터미널을 가리킴.

프로세스 ID 확인


pgrep : (ps+grep) 형태로 기존의
ps -ef | grep sleep | grep -v grep|를 축약한 거다.

  • 프로세스 목록을 트리 형태로 확인
    pstree
    pstree -p (PID 옵션)


아카이브 생성


  • 아카이브 파일 : 여러 파일을 하나의 파일로 묶은 파일

  • tar(Tape Archive)

  • 아카이브 생성
    $tar cf TAR_FILE FILE...

$tar cvf TAR_FILE FILE...
cf 사이의 v : 작업 과정을 자세하게 출력(verbose)

  • 아카이브 파일 목록 확인
    $tar tf TAR_FILE
    $tar tvf TAR_FILE

  • 아카이브 풀기(Extract)
    $tar xf TAR_FILE
    $tar xvf TAR_FILE

특정 디렉터리에 아카이브 파일 추출
$tar xvf TAR_FILE -C DESTINATION_PATH



압축


  • 압축 분류
    • 손실 압축
    • 비손실 압축
  • gzip 압축
    $gzip GZIP_FILE...

  • gzip 압축 해제
    $gunzip GZIP_FILE
    $gzip -d GZIP_FILE

  • bzip2 압축
    $bzip2 BZIP_FILE

  • bzip2 압축 해제
    $bunzip2 BZIP2_FILE
    $bzip2 -d BZIP2_FILE

0개의 댓글