1. 프로세스

1) 프로그램 실행 시

① 디스크에 저장된 프로그램을 커널이 메모리에 올린다.

② 메모리에 올라간 프로그램을 CPU가 실행한다.

 

2) 프로세스 

→ 메모리 위에 올라가서 실행 중인 프로그램, 각각 pid라는 고유 번호를 할당받아 관리

 

 

2. ps 명령어 

1) $ ps : 프로세스 조회

bash는 실행하자마자 열리고, ps는 ps를 입력하여 추가된 것으로 각각 고유의 PID가 배정되는 것을 확인할 수 있다.

위와 같이 특정 명령이 실행되면 프로세스로 전환되고, 실행이 끝나면 프로세스 목록에서 사라진다.

 

2) $ ps x : 백그라운드에서 돌아가는 프로세스 조회

※ 데몬 프로세스 : 터미널과 무관하게 돌아가는 프로세스 → 항상 켜져 있어야 하는 속성의 프로세스

 

3) $ ps a : 시스템의 모든 프로세스 조회

위와 같이 시스템 내부에서 동작 중인 모든 프로세스를 조회할 수 있고, 조회된 PID를 이용해 여러가지 작업을 할 수 있다.

 

4) ps 옵션 : "-"를 쓰지 않는다.

x 사용자의 프로세스 전체 출력
ux 사용자의 프로세스 상세히 출력
ax  모든 사용자의 프로세스 출력
aux 모든 사용자의 프로세스를 상세히 출력
auxww aux 결과가 화면에 잘리지 않도록 출력

 

5) $ ps ux | less : 모든 프로세스를 페이지별로 출력 (종료:q)

 

6) $ top : 메모리 구조 살펴보기

위와 같이 메모리 사용량 등을 실시간으로 보여준다.

 

※ 참고

- VIRT : 가상 할당량 → RES의 최대치

- RES : 실질 할당량

- SHR : 공유 메모리 영역

 

 

3. 잡

1) 잡 (job)

- 프로세스 : 커널 입장에서 실행

- 잡 : 셸에서 실행하고 있는 단위

위와 같이 man bash를 ctrl+z로 강제종료시켰을 때 job이 하나 생성된 것을 확인할 수 있다.

실행 중인 프로그램이 종료되면 프로세스 목록에서 사라지기 때문에 잡에서는 확인할 수 없다.

 

잡 목록에서 PID를 조회하고자 할 때 -l 옵션을 사용한다.

 

2) $ fg : 잡의 포그라운드 전환

foreground : 사용자의 입력을 받을 수 있는 상태

→ 정지 상태에 있는 bash 메뉴얼을 다시 확인하기 위해서는 포그라운드로 되돌려야 함

위와 같이 fg %번호 명령어를 이용하여 포그라운드로 전환할 수 있고, 잡이 하나인 경우에는 fg만 입력해도 된다.

 

3) $ bg : 잡의 백그라운드 전환

background : 잡을 종료하지 않은 채 셸로 전환

위와 같이 포그라운드 상태에서는 sleep이 끝날 때까지 아무것도 하지 못한다.

백그라운드 상태에서는 sleep이 끝나지 않고도 제어권을 되찾아오고, 잡은 백그라운드에서 60초를 수행할 때까지 돌아가는 병렬적인 작업을 수행하게 된다.

포그라운드와 마찬가지로 bg %번호 명령어를 이용하여 백그라운드로 전환할 수 있고, 잡이 하나인 경우에는 bg만 입력해도 된다.

 

4) 잡과 프로세스의 종료

① 잡의 종료 

- 포그라운드 : ctrl + c

- 백그라운드 : kill %잡번호

위와 같이 kill 명령어를 이용하여 백그라운드에 있는 잡을 종료시킬 수 있다.

 

② 프로세스의 종료 : kill PID번호

위와 같이 kill PID번호 명령어를 입력하여 프로세스를 종료할 수 있다.

프로세스는 현재 로그인중인 유저가 실행한 프로세스만 삭제할 수 있고, 루트 계정만 다른 사용자의 프로세스를 강제로 종료할 수 있다.

 

5) kill : 프로세스에 특정한 신호를 보내는 명령어

SIGHUP, 1 터미널 제어 시 또는 제어 프로세스 종료 시 감지
SIGUNT, 2 키보드에서 보내는 인터럽트 신호
SIGQUIT, 3  키보드에서 보낸 종료 신호
SIGABRT, 6 abort(3)로 받은 신호 무시
SIGKILL, 9 kill 신호
SIGTERM, 15 중단 신호
SIGCONT, 19, 18, 25 중지된 프로세스 재개
SIGSTOP, 17, 19, 23 프로세스 중지

 

ex) PID가 10023인 프로세스를 중지시킬 경우

$ kill 10023

$ kill -9 10023

$ kill -SIGKILL 10023

위와 같이 해당 프로세스가 잘 종료된 것을 확인할 수 있다.

 

6) killall : 프로세스명으로 종료시키는 명령어

$ killall -9 프로세스명

위와 같이 killall 명령어를 이용하면 특정 pid가 아닌 같은 이름을 가진 모든 프로세스를 동시에 종료할 수 있다.

'네트워크캠퍼스 > LINUX' 카테고리의 다른 글

Shell Script  (0) 2024.01.17
Devops와 SE를 위한 리눅스 커널 이야기  (0) 2024.01.17
텍스트에디터  (0) 2024.01.15
파일시스템  (0) 2024.01.11
프롬프트  (0) 2024.01.10

+ Recent posts