ForeGround(포어 그라운드) 작업 |
- 사용자가 입력한 결과가 출력할 때까지 대기(프롬프트가 출력되지 않음) - 한 터미널에서 한 번에 하나의 프로세스만 실행 가능 - 동시에 여러 개의 프로세스를 실행할 수 없음 |
BackGround(백 그라운드) 작업 |
- 작업 제어(Job Control)가 제공 - ForeGround 프로세스가 실행되는 동안 뒤에서 BackGround 프로세스가 실행될 수 있으므로 한 터미널에서 여러 개의 프로세스를 동시에 실행 가능. - BackGround 방식으로 명령 실행시, 명령의 처리가 끝나는 것과 관계없이 곧바로 프롬프트가 출력되어 다른 작업을 계속 할 수 있음. - BackGround 작업은 명령의 실행 시간이 많이 걸릴 것으로 예상되는 명령을 실행한 후 다른 작업을 할 때 용이. |
BackGround 작업과 출력 방향 전환 |
- BackGround 작업은 실행이 끝나면 현재 터미널에서 무엇을 하든 상관없이 결과가 그대로 화면에 출력 - 기존 작업 화면과 백그라운드 작업 결과가 섞여 제대로 확인을 할 수 없는 경우가 생김. - BackGround 작업 처리기 출력, 오류 방향을 전환하여 실행 결과 및 오류 메시지를 파일로 저장하는 방법을 많이 사용. - 명령을 백그라운드로 실행하려면 명령의 마지막에 '&(앰퍼샌드)' 기호를 추가 user@ubunutu:~$ sleep 50& [1] 4932 user@ubunutu:~$ 참조(입출력 처리 관련) : http://sharkmino.tistory.com/1487 |
작업 제어(Job Control) |
- 한 터미널에서 여러 프로세스를 실행, 관리 - C 쉘에서 처음 개발 - 작업 제어 도구가 관리하는 프로세스들을 jobs라고 함. - 작업 전환과 작업 일시 중지, 작업 종료를 뜻함. - 작업 전환 : BackGround -> ForeGround, ForeGround -> BackGround - 작업 일시 중지 : 작업 일시 중단 - 작업 종료 : 작업 종료 - 'jobs' 명령으로 작업 목록 확인 가능. |
jobs - 작업 목록 확인 |
- 현재 실행중인 BackGround 작업을 보는 명령 - 'jobs' 배시 쉘의 내부 명령- 기능 : 백그라운드 작업을 모두 보여줌. 특정 작업 번호 지정시 해당 작업의 정보만 확인할 수 있음 - 형식 : josb [%작업 번호] - %작업 번호 : => %번호 : 해당 번호의 작업 정보 출력 => %+ 또는 %% : 작업 순서가 '+'인 작업 정보 출력 => %- : 작업 순서가 '-'인 작업 정보 출력 사용 예 : jobs %1, jobs |
user@ubuntu:~$ jobs [1]- 실행중 sleep 50 & [2]+ 실행중 find / -name passwd > pw_back.dat 2>&1 & user@ubunutu:~$ |
||
항목 |
출력 예 |
의미 |
작업 번호 |
[1] |
작업 번호. 백그라운드로 실행될 때마다 순차적으로 증가 |
작업 순서 |
+ |
작업순서 - '+' : 가장 최근에 접근한 작업 - '-' : '+' 작업보다 바로 전에 접근한 작업 - 공백 : 그 외 작업 |
상태 |
실행 중 |
작업상태 - '실행중(Running)' : 현재 실행 중 - '완료됨(Done)' : 작업이 정상적으로 종료 - '종료됨(Terminated)' : 작업이 비정상적으로 종료 - '정지됨(Stopped)' : 작업이 잠시 중단 |
명령 |
slepp 50 & |
BackGround로 실행중인 명령 |
작업 전환 명령 |
|
명령 |
의미 |
Ctrl + z 또는 stop [%작업번호] |
ForeGround 작업을 중지(종료하는 것이 아닌 '잠시 중단') |
bg [%작업 번호] |
작업 번호가 지시하는 작업을 BackGround 작업으로 전환 |
fg [%작업 번호] |
작업 번호가 지시하는 작업을 ForeGround 작업으로 전환 |
- 작업 전환을 하려면 우선 'Ctrl + z'로 작업을 중지 후 'bg [%작업번호] 또는 fg [%작업번호] 명령으로 전환 - 작업 번호를 지정하지 않고 'bg 또는 fg' 명령 사용시 작업 순서가 '+'인 작업에 적용 |
작업 종료 : Ctrl + c |
- ForeGround 작업을 'Ctrl + c' 입력시 대부분 종료 - 'Ctrl + c' 는 인터럽트 시그널을 ForeGround 프로세스에 전달(인터럽트를 받으면 기본적으로 종료) - 프로그램에서 'Ctrl + c(인터럽트 시그널 전달)' 을 무시하도록 설정했을 경우는 종료되지 않음 - 다른 종료 방법으로는 다른 터미널(ForeGround 작업 같은 경우)에서 해당 프로세스의 PID를 찾아 강제 종료 - BackGround 작업은 'kill' 명령으로 강제 종료해야함. - 'kill' 명령의 인자로 PID 대신 '%작업 번호'를 지정해도 됨. |
로그아웃 후에도 BackGround 작업 계속 실행 : nohup |
- BackGround 작업을 실행한 터미널이 종료되거나, 사용자가 로그아웃시 실행 중이던 BackGround 작업도 함께 종료 - 로그아웃한 다음에도 작업이 완료될 때까지 작업을 실행하는 경우 'nohup' 명령 사용 |
nohup |
- 기능 : 로그아웃 뒤에도 BackGround 작업 계속 실행 - 형식 : nohup 명령& |
- 'nohup' 로 실행하는 명령은 반드시 BackGround 로 해야함 - 별도의 출력 방향 전환이 없을 경우 명령의 실행 결과와 오류 메시지는 현재 디렉터리에 'nohup.out' 파일로 저장 |
'OS > Linux - Ubuntu' 카테고리의 다른 글
[Linux - 리눅스 / Ubuntu - 우분투] 우분투 터치패드 상세 조절 (0) | 2015.03.23 |
---|---|
[Linux - 리눅스 / Ubuntu - 우분투] Mac - 터미널 mail(?) 관련 - at, mail (0) | 2015.03.18 |
[Linux - 리눅스 / Ubuntu - 우분투] 프로세스 관리 도구 - top (0) | 2015.03.15 |
[Linux - 리눅스 / Ubuntu - 우분투] 프로세스 종료 (0) | 2015.03.13 |
[Linux - 리눅스 / Ubuntu - 우분투] 프로세스 관리 명령(목록, 정보, 상세정보) - ps, pgre, BSD 옵션, 유닉스 옵션, GNU 옵션 (0) | 2015.03.10 |