터미널 인터페이스를 통한 Linux 명령의 활용은 시스템과의 통신에 효율적인 방법입니다. 그럼에도 불구하고, 경우에 따라 명령줄을 통해 작업을 완료하려면 장시간이 소요될 수 있으며, 사용자는 장시간의 대기 시간을 견디거나 다른 명령 세트를 수행하기 위해 새로운 셸을 실행해야 할 수 있습니다.
백그라운드에서 Linux 명령을 실행하는 프로세스는 간단한 기술을 활용하여 수행할 수 있습니다.
명령 뒤에 앰퍼샌드 추가
원하는 명령 뒤에 앰퍼샌드 기호를 사용하여 Linux 백그라운드 명령을 실행할 수 있습니다. 이 방법을 사용하면 셸 사용 기능을 방해하지 않고 명령을 실행할 수 있습니다. 예를 들어 터미널에서 gedit 텍스트 편집기를 시작하면 편집기를 닫을 때까지 셸을 사용할 수 없게 됩니다. 그러나 명령에 앰퍼샌드 기호를 추가하면 백그라운드에서 명령을 실행할 수 있으므로 셸에 즉시 액세스할 수 있습니다.
gedit &
마찬가지로 앰퍼와 함께 스크립트 이름을 지정하여 백그라운드에서 Bash 스크립트를 실행할 수 있습니다.
./script.sh &
bg를 사용하여 실행 중인 명령을 백그라운드로 보내기
키보드 단축키 Ctrl + Z 뒤에 bg 명령을 사용하면 프로세스가 계속 실행되는 동안 손쉽게 백그라운드로 리디렉션할 수 있습니다. Ctrl + Z를 누르면 실행 중인 절차가 중지되고, bg를 누르면 계속 처리할 수 있도록 백그라운드로 되돌립니다.
터미널에서 “작업”을 입력하여 진행 중인 백그라운드 작업의 목록을 얻을 수 있습니다. 백그라운드 작업을 가져오려면 “fg” 명령을 활용하세요.
식별자가 2인 백그라운드 프로세스를 불러와야 하는 경우 ‘fg %n’ 명령을 사용할 수 있으며, 여기서 ‘%n’은 주의가 필요한 특정 작업을 나타냅니다.
fg %2
실행 중인 백그라운드 프로세스를 종료하려면 ‘%’ 기호 뒤에 특정 작업 식별자 다음에 ‘kill’ 명령을 사용합니다.
kill %2
nohup으로 백그라운드로 명령 보내기
Nohup은 관리자가 HANG UP(HUP) 신호에 영향을 받지 않는 터미널 명령을 실행할 수 있는 Linux 명령입니다. 이 명령을 사용하면
백그라운드에서 눈에 띄지 않는 Nmap 포트 스캔을 실행하기 위한 샘플 스크립트가 제공됩니다.
nohup sudo nmap -sS --top-ports=15 192.168.1.1/24
nohup을 사용하면 셸을 떠난 후에도 명령 실행을 계속할 수 있다는 특징이 있습니다. 또한 프로세스 로그를 생성합니다.이러한 로그의 위치는 현재 디렉토리 또는 $HOME에서 찾을 수 있습니다.
시스템 리디렉션을 사용하여 백그라운드 명령 실행
Linux에서 시스템 리디렉션을 활용하면 백그라운드 프로세스를 실행할 수 있습니다. 셸이 백엔드에서 작업을 수행하는 동시에 추가 사용자 개입을 위해 콘솔을 다시 소유하는 ping 명령의 구현을 예로 들 수 있습니다.
ping -c5 8.8.8.8 > output.log 2>&1 &
disown을 사용하여 백그라운드에서 실행되도록 Linux 명령 설정
`&` 연산자를 사용하여 프로세스를 백그라운드로 보내면 중단 없이 작업을 쉽게 실행할 수 있습니다. 그런 다음 `disown` 명령을 사용하면 해당 프로세스를 셸에서 분리할 수 있습니다.
gedit & disown
`disown` 사용의 중요한 이점 중 하나는 사용자가 셸에서 로그아웃하거나 터미널 세션을 닫은 후에도 `nohup`이 제공하는 기능과 유사하게 시스템에서 작업을 계속 실행할 수 있다는 것입니다.
tmux를 사용하여 백그라운드에서 Linux 명령 실행
Linux 환경에서 작업하면서 생산성을 향상시키려는 사람들은 사용자가 단독 창 내에서 여러 터미널 세션을 동시에 수행 할 수있는 다목적 멀티플렉서 인 tmux에 익숙해지는 것이 좋습니다. tmux의 기능에 익숙하지 않은 사용자라면 능숙하게 활용하고 커스터마이징하는 것을 적극 권장합니다.
tmux new -d 'ping -c 10 8.8.8.8 > output.log'
앞서 언급한 tmux 명령이 실행되면 백그라운드에서 독립 셸 내에서 핑 명령을 시작합니다. 이 기술을 사용하면 동일한 방식으로 모든 Linux 프로세스 또는 명령을 시작할 수 있습니다.
Linux 명령을 백그라운드에 두기
백그라운드에서 명령을 실행하면 관리자가 여러 작업을 동시에 수행할 수 있으므로 시스템을 보다 효율적으로 관리할 수 있습니다. “&” 기호를 사용하거나 “Ctrl + Z”를 누르는 등 백그라운드로 작업을 보내는 방법에는 여러 가지가 있습니다. 그러나 셸이 닫히면 시스템이 백그라운드 프로세스를 종료하므로 이러한 접근 방식에는 한계가 있습니다.
또는 사용자가 터미널에서 로그아웃하거나 세션을 종료하는지 여부에 관계없이 지정된 명령을 계속 실행할 수 있는 nohup 및 disown과 같은 유틸리티를 사용할 수도 있습니다.
장시간 방치된 애플리케이션을 방치하면 시스템 기능에 부정적인 영향을 미칠 수 있는 ‘좀비’ 프로세스로 변할 수 있으므로 애플리케이션을 주의 깊게 살펴보는 것이 중요합니다.따라서 이러한 바람직하지 않은 프로세스를 주기적으로 감지하고 종료하는 것이 좋습니다.