본문 바로가기
프로그래밍/Linux

[Linux] 쉘 스크립트(Shell script) 3편 - 배경 작업 및 작업 제어

by HI_Ai 2023. 8. 31.
반응형

리눅스와 다른 유닉스 기반 시스템에서는 프로세스를 포그라운드 또는 백그라운드에서 실행할 수 있습니다. 이 기능은 여러 작업을 동시에 수행할 때 유용하며, 사용자가 쉘 세션을 유지하면서 다른 작업을 실행하게 해줍니다.

 

배경 작업 실행

&를 사용하여 명령어나 스크립트를 백그라운드에서 실행할 수 있습니다.

먼저 10분 동안 동작하는 간단한 예제를 만들어보겠습니다. 이를 위해 sleep 명령어를 사용하겠습니다.

#!/bin/bash

echo "백그라운드 작업 시작."

# 600초 동안 대기합니다. (10분)
sleep 600

echo "백그라운드 작업 종료."

이 스크립트는 실행되면 "백그라운드 작업 시작."이라는 메시지를 출력하고, 10분 동안 대기한 후 "백그라운드 작업 종료."라는 메시지를 출력합니다.

스크립트를 실행하려면 다음과 같은 명령어를 사용하면 됩니다:

[Example-Terminal:~ user]$ chmod +x longtask.sh
[Example-Terminal:~ user]$ ./longtask.sh &

chmod +x 명령어는 스크립트에 실행 권한을 부여합니다. &는 스크립트를 백그라운드에서 실행하겠다는 의미입니다.

 

백그라운드에서 스크립트 실행
이제 위에서 만든 .sh파일을 백그라운드에서 실행하고 싶다면 다음과 같이 수행할 수 있습니다.

[Example-Terminal:~ user]$ ./longtask.sh &
[1] 12345

여기서 12345는 프로세스 ID입니다.

백그라운드 작업 확인
jobs 명령어를 사용하여 현재 백그라운드에서 어떤 작업이 진행되고 있는지 확인해봅시다.

[Example-Terminal:~ user]$ jobs
[1]+  Running                 ./longtask.sh &

현재 1개의 작업이 진행중인 것을 확인할 수 있습니다.

 

백그라운드 작업을 포그라운드로 이동
fg 명령어를 사용하여 백그라운드에서 실행되고 있는 longtask.sh를 포그라운드로 가져옵니다.

[Example-Terminal:~ user]$ fg %1
./longtask.sh

이제 longtask.sh 스크립트는 포그라운드에서 실행되며, 스크립트의 출력을 직접 볼 수 있습니다.

작업 일시 중지 및 백그라운드 재개
스크립트가 포그라운드에서 실행되는 동안 Ctrl + Z를 눌러서 작업을 일시 중지할 수 있습니다.

[1]+  Stopped                 ./longtask.sh

이후 bg 명령어를 사용하면 일시 중지된 작업을 백그라운드에서 계속 실행할 수 있습니다.

[Example-Terminal:~ user]$ bg %1
[1]+ ./longtask.sh &


배경 작업 종료
kill 명령어를 사용하여 백그라운드에서 실행 중인 longtask.sh 스크립트 작업을 종료하려면:

[Example-Terminal:~ user]$ kill %1
[1]+  Terminated                 ./longtask.sh

 


파이썬을 활용해서 이러한 제어가 가능하기 때문에 같이 연습하면 좋을 것 같습니다.

파이썬 활용시에는 먼저 .py를 만든 후에 .sh파일을 따로 생성하여 만들면 됩니다.

#1/bin/bash

sudo python3 test.py

이후 bash 스크렙트를 실행 권한을 부여한 후 실행합니다.

[Example-Terminal:~ user]$ chmod +x runRGB.sh
[Example-Terminal:~ user]$ ./runRGB.sh

이후 과정은 위의 방법과 동일합니다.

반응형