일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- MYSQL
- Trie
- two pointer
- Brute Force
- 이진탐색
- Two Points
- Stored Procedure
- Dijkstra
- Hash
- 다익스트라
- union find
- DP
- SQL
- binary search
- 그래프
- String
- 스토어드 프로시저
Archives
- Today
- Total
codingfarm
프로세스 - 포그라운드와 백그라운드 본문
3. 포그라운드, 백그라운드 프로세스와 작업 제어
3.1 포그라운드 작업과 백그라운드 작업
포그라운드 작업(foreground job)
- 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다리는 방식으로 처리되는 작업
- ex) 터미널에서 작업할 때 일반적으로 사용자가 명령을 입력하면 셸이 그 명령을 해석하여 실행하고 결과를 화면에 출력한다. 그러면 사용자는 화면에 출력된 결과를 봐야 다시 명령을 입력할 수 있는 대화식으로 작업을 수행한다.
- 포그라운드 프로세스 : 포그라운드 작업방식으로 처리되는 프로세스
>> sleep 100 // foreground job
// sleep 명령이 끝날 때까지 기다려야 한다.
백그라운드 작업(background job)
- 사용자가 입력한 명령이 끝나는것과 상관없이 곧바로 프롬프트가 출력되어 다른 작업을 진행할 수 있는 작업
- 백그라운드 프로세스 : 박그라운드 작업방식으로 처리되는 프로세스
- 명령을 백그라운드 방식으로 실행하려면 명령의 마지막에 & 기호를 추가한다.
>> sleep 100 & // background job
>> // 프롬프트가 바로 나와 다른 명령을 실행할 수 있다.
백그라운드 작업과 출력 방향 전환하기
- 백그라운드로 실행되는 프로그램이 출력을 작업중인 콘솔에 띄우면 결과가 뒤섞여 제대로 확인하기 어려워진다.
- 백그라운드로 처리할때는 아래처럼 출력과 오류 방향을 전환하여 실행 결과와 오류 메시지를 파일로 저장하는 방법을 많이 사용한다.
>> find / -name passwd > pw.dat 2>&1 & // pw.dat에 결과와 오류를 저장한다.
3.2 작업 제어(job control)
- 작업 제어 도구(job control tool) : 한 터미널에서 동시에 프로세스를 실행하고 관리한다.
- 작업 제어(job control) : 작업 전환, 작업 일시 중지, 작업 종료를 뜻한다.
- 작업 전환 : 포그라운드 작업과 백그라운드 작업간의 전환
- 작업 일시 중지 : 작업을 잠시 중단
- 작업 종료 : 프로세스를 종료하듯이 작업을 종료
- 작업(job) : job control tool이 관리하는 process
작업 목록 보기
작업 전환하기
명령 | 기능 |
Ctrl+z 또는 stop [%작업번호] | 포그라운드 작업을 정지한다(종료가 아님) |
bg [%작업번호] | 작업번호가 지시하는 작업을 백그라운드 작업으로 전환한다. |
fb [%작업번호] | 작업번호가 지시하는 작업을 포그라운드 작업으로 전환한다. |
vim과 sleep 명령을 포그라운드 작업으로 실행한 후, Ctrl + z 명령으로 일시 정지 시킨 모습이다.
작업 종료하기
- 포그라운드 작업은 ctrl+c를 입력하면 대부분 종료된다.
- ctrl + c는 인터럽트 시그널을 포그라운드 프로세스에 전달하며, 인터럽트를 받으면 기본적으로 프로세스를 종료하도록 되어있다.
- 터미널에서 해당 프로세스의 PID를 찾아 kill 명령으로 종료해도 된다.
로그아웃 후에도 백그라운드 작업 계속 실행하기
- 아래의 작업이 실행되면 백그라운드 작업이 종료된다.
- 작업을 실행한 터미널이 종료 or 사용자가 로그아웃
- nohup 명령을 쓰면 로그아웃한 후에도 백그라운드 작업의 실행이 지속된다.
nohup 명령&
nohup 명령을 사용할 때는 반드시 백그라운드로 실행해야 한다.
'Linux > Ubuntu' 카테고리의 다른 글
프로세스 관리 - 작업 예약 (0) | 2021.03.06 |
---|---|
프로세스 관리 - 개념, 관리 도구 (0) | 2021.03.06 |
특수 접근 권한 SetUID, SetGID (0) | 2021.03.05 |
입출력 방향 바꾸기 (0) | 2020.11.15 |
shell (0) | 2020.11.04 |
Comments