$COMMAND1 | COMMAND2

프로그램 : 기계어 코드를 포함하는 실행 바이너리 파일
프로세스 : 프로그램이 메모리에 적재되어 실행되는 상태의 프로그램
프로세스 분류
| 항목 | 설명 |
|---|---|
| 부모프로세스 | 다른 프로세스를 생성 할 수 있는 프로세스 |
| 자식프로세스 | 부모 프로세스로부터 만들어지는 프로세스 |
| 데몬프로세스 | 일반적으로 사용자가 직접 실행 시키지 않고, 커널에 의해 구동되며 백그라운에서 특정 서비스를 제공하기 위해 구동됩니다. 파일이름의 끝에 d를 붙여서 사용하는 것이 일반적으로 웹서비스의 경우는 httpd 데몬을 실행하여 서비스를 시작한다. |
| 고아프로세스 | 자식 프로세스는 작업 종료되면 부모 프로세스로 되돌아가는데, 되돌아가기 전에 부모 프로세스가 종료된 경우를 말하며 고아 프로세스는 init 프로세스가 해당 프로세스가 종료 될 수 있도록 해준다. |
| 좀비프로세스 | Defunct 프로세스라고도 알려져 있으며, 자식 프로세스가 종료를 위해 프로세스 리스트라 불리우는 목록에서 종료 승인을 대기하고 있는 상태에 있는 프로세스로, 시스템에 존재하는 리소스를 반납하지 않은 상태로 리스트에 남아 있는 프로세스를 의미합니다. 즉, 이미 종료된 프로세스지만, 리소스 반환을 하지 못한 상태로 남아 있는 프로세스 |
PID(Proccess ID) : 프로세스가 생성되어 실행될 때 운영체제로부터 할당 받는 프로세스의 고유한 ID
PPID(Parent PID) : 부모 프로세스의 PID
프로세스 목록 확인
$ps[OPTION] - 터미널에서 실행하고 있는 현재 사용자의 프로세스 목록 출력
$ps-ef - 시스템에서 실행 중인 모든 프로세스 목록 출력(System V 계열 유닉스 옵션 형식)
$ps aux - 시스템에서 실행 중인 모든 프로세스 목록 출력(BSD 계열 유닉스 옵션 형식)
| 이름 | Status Flag | 설명 |
|---|---|---|
| 실행 | R | TASK_RUNNING 프로세스가 실행 중 또는 실행 큐에 존재함 |
| 유휴 상태 | S | TASK_INTERRUPTABLE 프로세스가 하드웨어 요청, 시스템 리소스 접근, 시그널 등 일부 조건을 기다림, 시그널 수신시 R 상태로 복귀 |
| 유휴 상태 | D | TASK_UNINTERRUPTABLE 시그널을 받아들이지 않는 상태. 프로세스 중단이 예기치 않은 장치 상태를 만드는 특정한 상황에서 사용됨 |
| 유휴 상태 | K | TASK_KILLABLE D 상태와 동일하지만 대기 중인 작업이 완전히 종료될 때 시그널을 받아들임. |
| 중지 | T | TASK_STOPPED 사용자 또는 다른 프로세스에 의해 시그널을 받아서 프로세스가 중지된 상태 다른 시그널을 수신해 프로세스가 재개될 수 있음. |
| 중지 | T | TASK_TRACED 디버깅 되는 프로세스가 일시적으로 중지된느 상태 |
| Zombie | Z | EXIT_ZOMBIE |
| Zombie | X | TASK_DEAD 부모 프로세스가 자식 프로세스의 구조를 정리(reap)하게 되면 프로세스가 릴리즈 됨. 프로세스 관리 명령어(ps 등)에서 관찰되지 않는 상태 |
실시간으로 프로세스를 모니터링
$top
시스템의 부팅시간, 부하 평균 값확인
$uptime

$gedit /etc/hosts 
$gedit /etc/hosts&
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
시그널 : 프로세스 동작을 제어하는 명령어

| 시그널 이름 | 시그널 번호 | 설명 |
|---|---|---|
| SIGHUP | 1 | 프로세스가 종료되지 않고 설정 파일을 다시 로드.(Hang up) |
| SIGINT | 2 | 프로세스 종료([Ctrl]+[C]), 프로세스가 무시할 수 있음.(Interrupt) |
| SIGQUIT | 3 | 프로세스 종료([Ctrl]+[/]), 프로스세가 무시할 수 있음. 프로세스 덤프 생성. |
| SIGKILL | 9 | 프로세스 강제 종료, 프로세스가 무시할 수 없음.(Kill) |
| SIGTERM | 15 | 프로세스 정상 종료, 프로세스가 무시할 수 있음.(Terminate) |
| SIGCONT | 18 | 프로세스 동작 재개 |
| SIGSTOP | 19 | 프로세스 중지. 프로세스가 무시할 수 없음. |
| SIGTSTP | 20 | 프로세스 중지([Ctrl]+[Z]). 프로세스가 무시할 수 있음. |
killall -s SIGNAL PROCESS_NAME
프로세스 이름을 지정하여 시그널 전달
pkill SIGNAL PROCESS_PATTERN
-p PPID
-t TERMINAL

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

pts/1은 다른 터미널을 가리킴.
pgrep : (ps+grep) 형태로 기존의
ps -ef | grep sleep | grep -v grep|를 축약한 거다.
pstreepstree -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
$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