소개
이 랩에서는 다양한 명령어를 사용하여 Linux 에서 백그라운드 작업을 관리하는 방법을 배우게 됩니다. 백그라운드에서 프로세스를 실행하고, 상태를 모니터링하며, 제어하는 방법을 익히게 됩니다. 이 지식은 Linux 환경에서 효율적인 멀티태스킹에 필수적이며, 터미널을 점유하지 않고 여러 작업을 동시에 실행할 수 있도록 해줍니다.
성과
이 랩을 마치면 다음을 수행할 수 있습니다.
&연산자를 사용하여 명령어를 백그라운드에서 실행합니다.jobs명령어를 사용하여 백그라운드 작업을 나열하고 모니터링합니다.fg명령어를 사용하여 백그라운드 작업을 포어그라운드로 가져옵니다.kill명령어를 사용하여 백그라운드 작업을 중지합니다.- 백그라운드 작업의 터미널 특정적인 특성을 이해합니다.
백그라운드에서 명령어 실행
백그라운드에서 간단한 명령어를 실행하는 것으로 시작해 보겠습니다.
터미널을 엽니다.
/home/labex/project디렉토리에 있어야 합니다. 그렇지 않은 경우, 다음을 입력하여 이 디렉토리로 변경할 수 있습니다.cd /home/labex/project장시간 실행되는 프로세스를 시뮬레이션하기 위해
sleep명령어를 사용합니다. 다음 명령어를 실행합니다.sleep 600 &sleep명령어는 지정된 시간 (초) 동안 일시 중지됩니다 (이 경우 600 초 또는 10 분). 끝에 있는&는 Linux 에게 이 명령어를 백그라운드에서 실행하도록 지시합니다.이 명령어를 실행한 후 다음과 유사한 출력을 보게 됩니다.
[1] 1234이 출력은 두 가지 중요한 정보를 보여줍니다.
[1]은 작업 번호입니다. 이 번호는 이 특정 백그라운드 작업을 참조하는 데 사용됩니다.1234는 프로세스 ID (PID) 입니다. 이것은 실행 중인 프로세스에 대한 고유 식별자입니다.
명령 프롬프트가 즉시 다시 나타나는 것을 알 수 있습니다. 이는 프로세스가 백그라운드에서 실행되고 있어 터미널을 계속 사용할 수 있기 때문입니다.
이제 백그라운드 작업의 상태를 확인해 보겠습니다.
jobs이 명령어는 현재 백그라운드 작업을 모두 나열합니다. 다음과 같은 출력을 볼 수 있습니다.
[1]+ Running sleep 600 &이는 작업 번호 1 이 실행 중이며, 방금 시작한
sleep 600명령어임을 알려줍니다.중요 참고 사항: 백그라운드 작업은 시작된 터미널 세션에 특정됩니다. 새 터미널 창이나 탭을 열면, 거기에서
jobs를 실행해도 원래 터미널의 백그라운드 작업이 표시되지 않습니다. 이는 Linux 에서 백그라운드 작업이 작동하는 방식을 이해하는 데 중요한 개념입니다.
여러 백그라운드 작업 실행
이제 백그라운드에서 하나의 작업을 실행했으므로, 여러 작업을 동시에 실행해 보겠습니다. 다양한 명령어를 혼합하여 백그라운드 작업의 다재다능함을 보여드리겠습니다.
몇 개의 백그라운드 작업을 더 시작해 보겠습니다. 다음 명령어를 차례대로 입력합니다.
ping -c 100 google.com > ping_results.txt & find /home -name "*.log" > log_files.txt & sleep 1200 &각 명령어는 새로운 백그라운드 작업을 시작합니다. 각 작업에 대한 작업 번호와 PID 를 보게 됩니다.
이제 모든 백그라운드 작업의 상태를 확인해 보겠습니다.
jobs4 개의 모든 작업 (1 단계의 작업 포함) 을 나열하는 출력을 볼 수 있습니다.
[1] Running sleep 600 & [2] Running ping -c 100 google.com > ping_results.txt & [3]- Running find /home -name "*.log" > log_files.txt & [4]+ Running sleep 1200 &작업 4 옆의
+는 이 작업이 가장 최근에 시작된 백그라운드 작업임을 나타냅니다. 작업 3 옆의-는 작업 4 가 완료되면 이 작업이 현재 작업이 될 것임을 나타냅니다.여러 백그라운드 작업을 빠르게 시작할 수 있으며, 터미널은 다른 명령에 대해 응답성을 유지하는 것을 확인하십시오.
백그라운드 작업을 포어그라운드로 가져오기
때로는 백그라운드 작업을 포어그라운드로 가져와서 상호 작용하거나 출력을 확인해야 할 수 있습니다. 이를 수행하는 방법을 알아보겠습니다.
먼저, 현재 작업을 나열합니다.
jobs이렇게 하면 현재 백그라운드에서 실행 중인 내용에 대한 보기가 새로 고쳐집니다.
장시간 실행되는 작업 중 하나를 포어그라운드로 가져오겠습니다. 목록에서 작업 번호를 선택합니다 (예: 작업 번호 3 이라고 가정하지만, 목록에서 여전히 실행 중인 작업에 해당하는 번호를 사용하십시오). 포어그라운드로 가져오려면
fg명령어를 사용하고 작업 번호를 입력합니다.fg %3%3은 작업 번호를 나타냅니다.%기호는 셸에게 프로세스 ID 가 아닌 작업 번호를 참조하고 있음을 알려줍니다.이 명령어를 실행한 후, 명령어가 포어그라운드에서 실행되는 것을 볼 수 있으며, 터미널은 완료되거나 중지할 때까지 "멈춰"있게 됩니다.
작업을 중지하고 터미널의 제어를 되찾으려면
Ctrl+C를 누릅니다. 이렇게 하면 현재 포어그라운드 프로세스에 인터럽트 신호가 전송됩니다.작업을 다시 확인해 보겠습니다.
jobs포어그라운드로 가져온 작업이 중지되었으므로 더 이상 나열되지 않는 것을 볼 수 있습니다.
백그라운드 작업 중지
이제 백그라운드 작업을 포어그라운드로 가져오지 않고 중지하는 방법을 알아보겠습니다.
먼저, 현재 작업을 나열합니다.
jobs이렇게 하면 어떤 작업이 여전히 실행 중인지 확인할 수 있습니다.
남아있는 백그라운드 작업 중 하나를 중지하겠습니다. 목록에서 작업 번호를 선택합니다 (예: 작업 번호 2 라고 가정하지만, 목록에서 여전히 실행 중인 작업에 해당하는 번호를 사용하십시오). 이를 중지하려면
kill명령어를 사용하고 작업 번호를 입력합니다.kill %2%2는 선택한 작업 번호를 나타냅니다. 다시 말하지만,%기호는 작업 번호를 참조하고 있음을 나타냅니다.kill명령어는 지정된 작업에 종료 신호를 보냅니다. 기본적으로 프로세스가 정상적으로 종료될 수 있도록 하는 신호를 보냅니다.작업을 다시 확인합니다.
jobs종료한 작업이 더 이상 나열되지 않는 것을 볼 수 있습니다. 이는 작업이 성공적으로 종료되었음을 확인합니다.
다른 명령어와 함께 백그라운드 작업 사용하기
이제 다양한 명령어를 연습했으니, 다른 실용적인 명령어와 함께 백그라운드 작업을 사용해 보겠습니다.
tar명령어를 사용하여 홈 디렉토리의 압축 아카이브를 백그라운드에서 생성합니다.tar -czf home_backup.tar.gz /home/labex &이 명령어는 홈 디렉토리의 압축된 tar 아카이브를 생성합니다.
이전 명령어와 마찬가지로 작업 번호와 PID 를 볼 수 있습니다.
작업 상태를 확인합니다.
jobs실행 중인 작업으로
tar명령어가 나열되어야 합니다.실행 중인 동안 다른 작업을 위해 터미널을 계속 사용할 수 있습니다. 이것이 백그라운드 작업의 강력함입니다!
잠시 후, 명령어가 완료되었는지 확인합니다.
jobs더 이상 나열되지 않으면 완료된 것입니다.
이제 아카이브가 생성되었는지 확인해 보겠습니다.
ls -l home_backup.tar.gz성공적으로 생성된 경우 아카이브 파일의 세부 정보를 표시합니다.
요약
이 랩에서는 Linux 에서 백그라운드 작업을 관리하기 위한 필수 기술을 배웠습니다.
&연산자를 사용하여 백그라운드에서 명령 실행jobs명령어를 사용하여 백그라운드 작업 나열 및 모니터링fg를 사용하여 백그라운드 작업을 포어그라운드로 가져오기kill을 사용하여 백그라운드 작업 중지- 네트워크 진단, 파일 검색, 아카이브 생성과 같은 실용적인 시나리오에 이러한 개념 적용
또한 중요한 개념을 배웠습니다. 백그라운드 작업은 시작된 터미널 세션에 특정됩니다. 즉, 각 터미널 창 또는 탭은 자체 백그라운드 작업 집합을 유지합니다.
이러한 기술은 Linux 환경에서 효율적으로 멀티태스킹을 수행하는 데 도움이 되며, 여러 프로세스를 동시에 실행하고 효과적으로 관리할 수 있습니다. 백그라운드 작업은 지속적인 상호 작용이 필요하지 않은 장기 실행 작업에 특히 유용하며, 다른 작업을 위해 터미널을 자유롭게 사용할 수 있도록 합니다.



