프로세스, 데몬
프로세스 : 하드디스크에 저장된 실행코드(프로그램)가, 메모리에 로딩되어 활성화된 것
- 실행하기 전에는 프로그램. 실행하면 프로세스
포그라운드 프로세스(Foreground Process)
- 실행하면 화면에 나타나서 사용자와 상호작용을 하는 프로세스
- 대부분의 응용프로그램
백그라운드 프로세스(Background Process)
- 실해은 되었지만 화면에는 나타나지 않고 실행되는 프로세스
- 백신 프로그램, 서버 데몬 등
프로세스 번호
- 각각의 프로세스에 할당된 고유번호
작업 번호
- 현재 실행되고 있는 백그라운드 프로세스의 순차번호
(실습)
ps -ef | grep fire
위의 명령어로 fire 가 들어가는 프로세스를 출력하면,
프로세스 번호가 1960, 부모 프로세스 번호가 1인 firewalld 프로세스를 확인할 수 있다.
kill 1960
kill 명령어를 사용해 프로세스 번호가 1960인 firewalld 프로세스를 종료시킬 수 있다.
만약 프로세스가 종료되지 않는다면 'kill -9' 옵션을 주어 강제종료 시킬 수 있다.
그럼에도 종료가 되지 않는다면, 해당 프로세스의 부모 프로세스를 종료시켜야 한다.
(부모 프로세스가 종료되면, 자식 프로세스도 종료된다.)
(실습2)
yes > /dev/null
yes를 입력하면 y가 무한으로 출력되는데, 이를 /dev/null로 보냄으로 써 무의미한 프로세스를 임의로 실행해준다.
그러면 무한으로 실행되므로 Ctrl + C 등의 명령어로 중지시키지 않으면, 아무것도 할 수가 없다.
ps -ef 명령어로 확인해주면, 아래와 같이 yes 프로세스가 실행중인 것을 확인할 수 있다.
kill로 프로세스를 죽이면, 중지할 수 있다.
(실습3)
백그라운드로 보냈다가 포그라운드로 다시 보내는 걸 해보자.
Ctrl + Z로 일시 중지를 한뒤에, 'bg'를 입력해주면 프로세스가 백그라운드로 넘어간다.
이때 앞에 붙는 [1] 이 백그라운드 작업 번호이다.
다시 포그라운드로 가져오려면 fg + <작업번호> 를 입력 해주면 된다.
명령어 &
명령어를 실행할 때, & 을 붙여주면, 백그라운드로 실행되도록 할 수 있다.
예를들어 tar 명령어 등으로 압축을 할때, 백그라운드로 실행하게 되면 압축 중에 다른 작업들을 진행할 수 있게 된다.