리눅스에서 백그라운드에서 Bash 명령 실행하는 방법

터미널에서 명령을 실행하고 몇 분, 때로는 몇 시간 동안 실행되게 두는 것보다 더 성가신 일은 없습니다. 다시 터미널을 사용할 수 없게 되죠. 물론 탭을 사용할 수 있지만, 이는 불편한 해결책이며, 작업 중에 업데이트를 보고 싶을 수도 있기 때문에 항상 최적의 방법은 아닙니다. 여기에서는 리눅스에서 bash 명령을 백그라운드에서 실행하는 몇 가지 방법을 보여드립니다.
또한 읽어보세요: 리눅스에서 lsof 명령을 사용하여 열린 파일 목록 보기
&로 명령 종료하기
명령을 백그라운드로 밀어넣고 싶다면, 끝에 &를 사용하는 것이 쉬운 방법입니다. 이렇게 하면 백그라운드에서 명령을 발행하고 실행되는 동안 터미널을 계속 사용할 수 있습니다. 그러나 단점이 있습니다. &를 사용한다고 해서 명령이 당신과 연결이 끊기는 것은 아닙니다. 단지 백그라운드로 밀어넣는 것뿐입니다. 이는 터미널을 사용하려고 할 때, 명령이 STDOUT 또는 STDERR로 출력하고자 하는 모든 것이 여전히 인쇄된다는 것을 의미하며, 이는 주의가 산만해질 수 있습니다.

COMMAND &터미널 세션이 닫히면 명령이 종료됩니다. jobs 명령을 발행하여 실행 중인 명령의 번호를 찾고, kill 명령으로 종료할 수도 있습니다. 그 구문은 다음과 같습니다:

kill %1&를 사용하는 것은 잠시 작업을 미뤄야 할 때 좋지만, 영원히 계속될 것이라고 기대하지 마세요.
또한 읽어보세요: 리눅스에서 dd 명령 사용하기
명령 뒤에 &를 붙이고, 그 다음에 disown 하기
단순히 &로 명령을 실행하면 백그라운드로 밀어넣고 터미널 창이 열려 있는 한 계속 실행됩니다. 그러나 터미널 세션이 종료되더라도 이 명령을 계속 실행하고 싶다면 disown 명령을 사용할 수 있습니다.
이 방법을 사용하려면, 먼저 &를 추가합니다.
COMMAND &위에서 언급했듯이, &를 사용하면 이 명령이 백그라운드로 밀려나지만 사용자와 분리되지 않습니다. 터미널에 jobs를 입력하여 이를 확인할 수 있습니다. 이전에 보았던 것처럼 백그라운드에서 실행 중인 명령이 표시됩니다.
그냥 쉘에 disown을 입력하면 됩니다. (그리고 다시 jobs 명령으로 확인할 수 있습니다.)

이제 터미널을 닫고 하루를 계속 진행할 수 있습니다. 여전히 STDOUT 또는 STDERR로 출력을 계속하겠지만, 터미널을 종료하고 다시 열면 그곳에 아무것도 보이지 않을 것입니다. top 또는 ps 명령으로 다시 명령을 찾고, kill 명령으로 종료할 수 있습니다.

또한 읽어보세요: 리눅스에서 Rm 명령 사용하기
/dev/null 뒤에 &를 붙인 명령
명령 뒤에 &를 추가하면 명령이 백그라운드로 밀려나지만, 그 결과 백그라운드 명령이 실행 중에 터미널에 메시지를 계속 출력하게 됩니다. 이를 방지하고 싶다면 명령을 /dev/null로 리디렉션하는 것을 고려해 보세요.

COMMAND &>/dev/null &이것은 터미널이 닫힐 때 명령이 종료되는 것을 방지하지는 않습니다. 그러나 위에서 언급했듯이, disown을 사용하여 실행 중인 명령을 사용자로부터 분리할 수 있습니다. 더 이상 실행하고 싶지 않다면 위에서 언급한 방법 중 어느 것이든 사용하여 종료할 수 있습니다.
또한 읽어보세요: Apt 및 Apt-Get 명령에 대한 궁극적인 가이드
&와 /dev/null을 사용한 nohup
이전 명령들과 달리, nohup을 사용하면 명령을 백그라운드에서 실행하고 계속 실행할 수 있습니다. 어떻게? nohup은 HUP 신호(신호 종료)를 우회하여 터미널이 꺼져도 백그라운드에서 명령을 실행할 수 있게 합니다. 이 명령을 “/dev/null”로 리디렉션하여 nohup.out 파일이 생성되지 않도록 하고, 모든 것이 한 명령으로 백그라운드로 이동합니다.
nohup COMMAND &>/dev/null &
또한 읽어보세요: OpenSSL을 사용하여 리눅스에서 SSL 인증서 생성하는 방법
오늘날 대부분의 리눅스 터미널 프로그램은 백그라운드에서 실행할 수 있는 기능을 내장하고 있습니다. 그와 함께, 현대의 init 시스템(예: systemd)은 사용자가 부팅 시 또는 언제든지 서비스를 시작할 수 있게 합니다.
그럼에도 불구하고 리눅스의 일부 프로그램은 데몬으로 실행되거나 현대의 init 시스템과 통합되는 기능이 부족합니다. 이는 실제로 불편하지만, 모든 개발자가 새로운 기능을 추가할 기술이나 시간이 있는 것은 아니기 때문에 이해할 수 있습니다.
다행히도 nohup이나 disown과 같은 명령은 여전히 현실이며, 이러한 프로그램을 백그라운드로 이동하는 데 도움을 줄 수 있습니다. 완벽하거나 화려하지는 않지만, 필요할 때 작업을 수행합니다.
이 리눅스 기사를 즐기셨다면, Google 계정을 GNOME Shell에 연결하는 방법, 윈도우 사용자에게 가장 좋은 리눅스 배포판, 알아야 할 LS 명령과 같은 다른 리눅스 콘텐츠도 확인해 보세요.
또한 읽어보세요: 명령줄 데이터 전송 및 기타를 위한 cURL 사용 방법