본문 바로가기

리눅스-기초명령어/프로세스 관리

jobs, bg, fg

 jobs

백그라운드의 작업들과 상태를 표시하는 명령어다.

 

사용법

jobs [옵션]

 

옵션

옵션 의미
-p 백그라운드에 있는 프로세스의 프로세스 아이디(PID)만 출력한다.
-l 백그라운드에 있는 프로세스의 프로세스 아이디(PID)를 함께 출력한다.
-s 백그라운드에 있는 프로세스 중 멈춰있는 프로세스만 출력한다.
-r 백그라운드에 있는 프로세스 중 실행중인 프로세스만 출력한다.

 

jobs로 확인 가능한 세션의 상태값

[root@Linux ~]# sleep 300
#sleep 지정된 시간 동안 호출 프로세스를 일시 중단할 수 있는 명령이다.
^Z #백그라운드로 보내기 위해 컨트롤 + z를 사용
[1]+  Stopped             sleep 300 # 일시 중단된 상태로 백그라운드로 넘어감
[root@Linux ~]# jobs
[1]+  Stopped                 sleep 300 

 

상태 설명
Running 작업이 계속 진행 중
Done 작업이 완료되어 0을 반환
Done(code) 작업이 정상적 완료 코드를 반환
Stopped 작업이 일시 중단



     * 참고 - 백그라운드에서 작업 실행

scp 400G 192.168.17.1:tmp/400G 와 같이 오랜 시간이 요구되는 작업의 경우 명령어 뒤에 &를 붙여 백그라운드에서 작업을 실행할 수 있다. 만약 포그라운드에서 작업을 진행할 경우 작업이 끝날 때까지 터미널에서 작업을 바라보고 있어야 하나 백그라운드로 보낼 경우 동시에 다른 작업을 수행 가능하다.

 

bg (background)

포그라운드에 있는 작업을 백그라운드로 보내 실행한다. 실행 중인 작업을 보낼 때는 컨트롤 + z를 사용하여 일시 중지 시킨후 보낸다.



실행 중인 작업을 백 그라운드로 보내는 법

[root@Linux ~]# sleep 300 # sleep 명령으로 실행 중일 때 명령이 안 통함
^Z # 컨트롤 + z 로 일시 중단 시킨 후 백 그라운드로 보냄
[1]+  Stopped  # 작업이 멈춤   sleep 300
[root@linux ~]# jobs
[1]+  Stopped                 sleep 300

[root@Linux ~]# bg %1 # 1은 jobs로 확인했을때 의 작업 번호
[1]+ sleep 300 &
[root@Linux ~]# jobs
[1]+  Running                 sleep 300 &

 

fg (foreground)

 백그라운드 프로세스를 포그라운드로 가져와 계속 실행하고 사용자와 상호 작용할 수 있도록 한다.

 

[root@Linux ~]# sleep 300
^Z
[1]+  Stopped                 sleep 300
[root@Linux ~]# fg %1    #백그라운드의 작업번호 1번을  
sleep 300                포그라운드로 전환한다.



fg, bg 활용한 예제

텍스트 무한 입력 쉘 스크립트 - 백그라운드 확인용 프로세스 만들기

[root@Linux ~]# vi /usr/bin/control.sh
#/usr/bin/ 디렉토리 밑에 control.sh 쉘 스크립트 작성

vi control.sh 내용

#!/bin/bash
while true; do
echo -n "$@ ">>./control_output
sleep 1
done;
#control_output파일에 입력한 명령어 무한 출력
#:wq로 저장 후 종료

실행권한 주기

[root@Linux ~]# cd /usr/bin
#디렉토리 위치 이동
[root@Linux bin]# chmod +x control.sh
-rwxr-xr-x. 1 root root          75 May  4 12:00 control.sh
#실행권한 주기

실행

[root@Linux ~]# control.sh hi
#상대설정으로 현 디렉토리 위치에 control_output 생성
#control_output에 'hi' 무한 입력

결과

[root@Linux ~]# tail -f control_output
hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi . . .
#echo hi 무한 입력

실행상태 확인

[root@Linux ~]# jobs
[1]+  Stopped                 control.sh hi
#fg 정지상태

bg전환

[root@Linux ~]# bg %1
[1]+ control.sh hi &
[root@Linux ~]# jobs
[1]+  Running                 control.sh hi &
#bg 실행상태

 

'리눅스-기초명령어 > 프로세스 관리' 카테고리의 다른 글

w  (1) 2023.08.31
pgrep  (0) 2023.08.31
kill 명령어  (0) 2023.08.31
top, htop  (0) 2023.08.31
ps  (0) 2023.08.31