Linux 에서는 완료하는 데 시간이 오래 걸리는 명령을 자주 접하게 됩니다. 기다리면서 터미널을 사용하지 못하게 두는 대신, **Linux 작업 제어 (Job Control)**를 사용하여 이러한 작업을 관리할 수 있습니다. 이 강력한 기능을 사용하면 단일 셸 세션 내에서 여러 백그라운드 프로세스를 실행하고 관리하여 워크플로우를 크게 개선할 수 있습니다.
명령을 백그라운드에서 실행하기
프로세스를 백그라운드에서 직접 시작하려면 명령 끝에 앰퍼샌드 (&) 를 추가하기만 하면 됩니다. 이렇게 하면 셸 프롬프트가 즉시 반환되어 명령이 실행되는 동안 계속 작업할 수 있습니다.
sleep 1000 &
sleep 1001 &
sleep 1002 &
백그라운드 작업 나열하기
jobs 명령을 사용하여 백그라운드에서 실행 중인 모든 작업을 볼 수 있습니다.
$ jobs
[1] Running sleep 1000 &
[2]- Running sleep 1001 &
[3]+ Running sleep 1002 &
출력에는 첫 번째 열에 작업 ID, 상태 및 원래 명령이 제공됩니다. + 기호는 가장 최근에 시작된 백그라운드 작업을 나타내고, - 기호는 두 번째로 최근 작업을 표시합니다.
활성 프로세스 관리하기
만약 명령이 이미 포그라운드에서 실행 중인데 터미널을 되찾아야겠다고 결정했다면 어떻게 해야 할까요? 중지할 필요가 없습니다. 먼저 Ctrl-Z를 눌러 실행 중인 프로세스를 일시 중지합니다. 그런 다음 bg 명령을 사용하여 일시 중지된 작업을 백그라운드로 보냅니다.
pete@icebox ~ $ sleep 1003
^Z
[4]+ Stopped sleep 1003
pete@icebox ~ $ bg
[4]+ sleep 1003 &
이제 sleep 1003 프로세스가 백그라운드 작업으로 실행 중이며, jobs 명령으로 이를 확인할 수 있습니다.
작업을 포그라운드로 가져오기
백그라운드 프로세스를 포그라운드로 다시 가져오려면 fg 명령을 사용합니다. 작업 ID 를 지정하여 특정 작업을 가져올 수 있습니다 (예: fg %1). 인자 없이 fg 명령을 실행하면 가장 최근의 백그라운드 작업 ( +로 표시된 작업) 이 포그라운드로 가져와집니다.
fg %1
백그라운드 작업 종료하기
백그라운드 프로세스를 중지해야 하는 경우 kill 명령을 사용할 수 있습니다. fg 명령과 유사하게, 퍼센트 기호 (%) 를 접두사로 붙여 작업 ID 를 참조합니다. 이것이 Linux 작업 제어의 핵심 기능입니다.
kill %1
이러한 명령을 숙달하는 것은 셸에서 효율적으로 멀티태스킹하려는 모든 초보 Linux 사용자에게 필수적입니다.