728x90
포그라운드(foreground), 백그라운드(background)
포그라운드와 백그라운드 작업의 이해
- 쉘은 프로세스를 작업(job) 단위로 관리
- 유닉스는 동시에 여러 작업을 할 수 있는 다중 작업(Multitasking) 운영체제
- 포그라운드(foreground, 전위) 처리와 백그라운드(background, 후위) 처리 방식으로 동작
포그라운드 처리
- 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 프롬프트가 출력되지 않아 다른 명령을 입력할 수 없어 기다려야 하는 경우
- 사용자가 명령을 입력하면 쉘이 명령을 해석하여 실행한 결과를 화면에 출력
- 사용자는 화면에 출력된 결과를 보고 다시 명령을 입력하여 대화식 작업을 함
- 포그라운드 프로세스 : 포그라운드 처리로 실행되고 있는 프로세스, 포그라운드 작업
- 포그라운드 처리의 예
- find 명령이 끝날 때까지 기다려야 함
$ find / -name passwd
백그라운드 처리
- 포그라운드 처리 방식은 한 번에 하나의 명령만 실행시키므로 여러 프로세스를 동시에 실행시킬 수 없음
- 백그라운드 처리 방식은 여러 프로세스를 동시에 실행시킬 수 있음
- 명령의 처리가 끝나는 것과 관계없이 곧바로 프롬프트가 출력되어 사용자가 다른 작업을 계속할 수 있음
- 백그라운드 프로세스 : 백그라운드 방식으로 처리되는 프로세스, 백그라운드 작업
- 명령을 백그라운드로 실행하려면 명령의 마지막에 &(앰퍼샌드) 기호를 추가
$ find / -name text &
[1] 6715
$
- 백그라운드 프로세스는 실행 결과와 오류 메시지를 화면에 그대로 출력
- 다른 작업할 때 방해받을 수 있으므로 출력 방향 전환하여 실행 결과를 파일로 저장
$ find / -name passwd > pw.dat &
[2] 6725
$
- 오류 메시지를 출력 방향 전환하여 파일로 저장
$ find / -name passwd > pw.dat 2> pw.err &
[3] 6726
$
- 다른 작업을 하는 도중 백그라운드 작업이 종료되면 Enter 키를 입력했을 때 백그라운드 작업 종료 메시지가 출력됨
포그라운드와 백그라운드 작업 제어
- 작업 제어 : 작업 전환, 실행 중지, 작업 종료
- 작업 전환 : 포그라운드 작업을 백그라운드 작업으로 전환, 백그라운드 작업을 포그라운드 작업으로 전환
- 실행 중지 : 작업을 잠시 중단시키는 것
- 작업 종료 : 프로세스 종료처럼 작업을 종료시키는 것
작업 목록 보기
- jobs 명령
- 백그라운드 작업을 모두 보여줌. 특정 작업 번호 지정하면 해당 작업의 정보만 보여줌
- 형식 : jobs [%작업]
- %작업
- %번호 : 해당 번호의 작업 정보 출력
- %+ 또는 %% : 작업 순서가 +인 작업 정보 출력
- %- : 작업 순서가 –인 작업 정보 출력
- 사용 예 : jobs %1, jobs
$ sleep 100&
[1] 6751
$ sleep 200&
[2] 6752
$ jobs
[1]- Running sleep 100 &
[2]+ Running sleep 200 &
$ jobs %1
[1]- Running sleep 100 &
$
작업 전환하기
- fg 명령
- 백그라운드 프로세스를 포그라운드 프로세스로 전환
- 사용법 : fg [%작업번호]
- 백그라운드로 수행 중인 작업이 여러 개인 경우 가장 최근에 수행한 작업(보통 + 기호가 붙어 있는 작업)을 포그라운드로 전환
$ jobs
[3]+ Running sleep 150 &
$ fg
sleep 150
- bg 명령
- 포그라운드 프로세스를 백그라운드 프로세스로 전환
$ sleep 150
^Z
[3]+ Stopped sleep 150
$ bg
[3]+ sleep 150 &
$ jobs
[2]- Running sleep 200 &
[3]+ Running sleep 150 &
$
작업 종료시키기
- 포그라운드 작업은 Ctrl+C를 입력하면 종료됨
- Ctrl+C는 인터럽트 시그널을 포그라운드 프로세스에 전달
- 프로세스는 인터럽트를 받으면 기본적으로 종료
- 종료시키고자 하는 프로세스의 PID를 다른 터미널에서 찾아 강제로 종료시키는 방법도 있음
- 백그라운드 작업은 kill 명령으로 종료
- kill 명령의 인자로 PID 대신 ‘%작업 번호’도 가능
로그아웃 후에도 백그라운드 작업 계속 실행하기
- nohup 명령
- 로그아웃 후에도 백그라운드 작업을 계속 실행시킴
- 실행 중인 프로세스의 표준 출력과 표준 에러는 ‘nohup.out’이라는 파일을 생성하여 기록,
- nohup 명령행 뒤에 ‘&’를 명시해야 함
- 형식 : nohup 명령&
$ nohup find / -name passwd &
[1] 7050
$ nohup: ignoring input and appending output to ‘nohup.out’
$
사용자 전환하기
로그인한 모든 사용자 정보 보기
- users 명령
- 현재 시스템에 로그인하고 있는 사용자명 출력
- 명령의 결과를 한 행으로 출력
- 형식 : users
$ users
ksshin ksshin
$
- who 명령
- 시스템을 사용하고 있는 사용자의 자세한 정보 출력
- 사용자명, 사용자가 접속한 단말기 번호, 사용자가 로그인한 시간, 외부 컴퓨터 이름이나 IP 주소 등
- 형식 : who [옵션]
- 옵션
- -q : 사용자명만 출력
- -H : 출력 항목의 제목도 함께 출력
- -b : 마지막으로 재부팅한 날짜와 시간 출력
$ who
ksshin tty1 2015-06-10 14:42
ksshin :0 2015-06-10 14:38 (:0)
$
- w 명령
- 로그인한 사용자 정보와 현재 작업의 정보 출력
- 사용자 정보 외에 시스템 정보도 출력
- 시스템 정보 : 현재 시간, 시스템이 부팅된 후 현재까지 경과된 기간, 로그인하고 있는 사용자 수, 실행 대기 중인 작업의 수
- 사용자 정보 : 사용자명, 단말기 번호, 로그인한 시간, 휴지(idle) 시간, JCPU, PCPU, 실행하고 있는 명령
- 휴지 시간 : 마지막 명령 실행 후부터 현재까지 작업하지 않고 있는 시간
- JCPU : 로그인한 후 실행했던 전체 프로세스에서 사용한 CPU 시간
- PCPU : 현재 실행 중인 프로세스가 사용한 CPU 시간
- what : 현재 실행 중인 명령
- 형식 : w [사용자명]
$ w
17:05:24 up 1 day, 15:41, 2 users, load average: 0.22, 0.16, 0.15
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ksshin tty1 10 6월 15 4.00s 11.93s 0.09s w
ksshin :0 :0 10 6월 15 ?xdm? 4:40m 5.36s init --user
$
자신의 정보 보기
- who am i 명령
- 로그인 정보 출력
- who 명령에 인자로 am i를 지정한 것
- who 명령의 결과 중 자신에 대한 정보만 출력
- whoami보다 상세한 사용자 정보 확인할 때 사용
$ who am i
ksshin tty1 2015-06-10 14:42
$
- whoami 명령
- 자신의 로그인 사용자명 출력
- 가상콘솔을 사용하거나 여러 계정으로 동시에 로그인하고 있는 경우 현재 시스템을 사용하고 있는 사용자를확인할 때
- 형식 : whoami
$ whoami
ksshin
$
- id 명령
- 현재 사용자의 로그인 ID와 그룹 정보 출력
- 사용자명, uid(사용자를 구분하는 번호), gid(그룹을 구분하는 번호) 정보 출력
- 형식 : id [옵션]
- 옵션 : -a : 모든 그룹 정보 출력
$ id
uid=1001(user1) gid=1001(user1) groups=1001(user1)
$
사용자 전환하기
- su 명령
- 다른 사용자로 전환
- 전환하려는 사용자의 비밀번호를 알고 있어야 함
- 형식 : su [-] [사용자명]
- 사용 예 : su, su – user1
- 다시 돌아가려면 exit 명령 사용
$ su user1
Password:
$ whoami
user1
$ pwd
/home/ksshin
$ exit
$ whoami
ksshin
$
- 사용자가 ksshin에서 user1으로 전환하였지만 현재 디렉토리는 /home/ksshin
- su 명령만 사용하면, 사용자는 전환되지만 디렉토리는 변하지 않음
- ‘-’ 옵션을 사용하면 사용자의 초기화 파일을 실행시켜 작업 디렉토리도 변경
$ su - user1
Password:
$ pwd
/home/user1
$
- su 명령을 사용자 이름 지정 없이 사용하여 root로 전환
$ su
Password:
# whoami
root
#
728x90
'프로그래밍 > Unix' 카테고리의 다른 글
[유닉스] 파일 시스템 마운트 와 복구 (0) | 2020.04.09 |
---|---|
[유닉스] 디스크 사용 정보, df 명령어, du 명령어 (0) | 2020.04.09 |
유닉스 프로세스 관리 명령 (0) | 2020.03.23 |
유닉스 프로세스의 개념과 종류 (0) | 2020.03.23 |
유닉스 기본 접근 권한 설정 (0) | 2020.03.23 |