기계적 인조 인간

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

다각화되는 요즘 무선 환경의 '3대 트렌드'

다각화되는 요즘 무선 환경의 '3대 트렌드'

차례:

Anonim

일반적으로 터미널에서 명령을 실행할 때는 다른 명령을 입력하기 전에 명령이 완료 될 때까지 기다려야합니다. 이를 포 그라운드 또는 포 그라운드 프로세스에서 명령 실행이라고합니다. 프로세스가 포 그라운드에서 실행되면 쉘을 차지하고 입력 장치를 사용하여 프로세스와 상호 작용할 수 있습니다.

명령을 완료하는 데 시간이 오래 걸리고 그 동안 다른 명령을 실행하려면 어떻게합니까? 당신은 당신의 처분에 몇 가지 옵션이 있습니다. 가장 명백하고 간단한 옵션은 새 셸 세션을 시작하고 해당 세션에서 명령을 실행하는 것입니다. 다른 옵션은 백그라운드에서 명령을 실행하는 것입니다.

백그라운드 프로세스는 터미널에서 시작하여 사용자와의 상호 작용없이 백그라운드에서 실행되는 프로세스 / 명령입니다.

우리는 백그라운드 프로세스가 리눅스라는 것을 이야기 할 것이다. 백그라운드에서 명령을 시작하는 방법과 셸 세션이 닫힌 후에 프로세스를 계속 실행하는 방법을 보여줍니다.

백그라운드에서 Linux 명령 실행

백그라운드에서 명령을 실행하려면 명령 끝에 앰퍼샌드 기호 ( & )를 추가하십시오.

command &

쉘 작업 ID (괄호로 묶음) 및 프로세스 ID가 터미널에 인쇄됩니다.

25177

백그라운드에서 여러 프로세스를 동시에 실행할 수 있습니다.

백그라운드 프로세스는 명령을 호출 한 터미널에 계속 메시지를 기록합니다. stdout stderr 메시지를 억제하려면 다음 구문을 사용하십시오.

command > /dev/null 2>&1 &

>/dev/null 2>&1 stdout /dev/null 리디렉션하고 stderr stdout 리디렉션하는 것을 의미합니다.

jobs 유틸리티를 사용하여 현재 쉘 세션에서 모든 중지 및 백그라운드 작업의 상태를 표시하십시오.

jobs -l

출력에는 작업 번호, 프로세스 ID, 작업 상태 및 작업을 시작한 명령이 포함됩니다.

+ 25177 Running ping google.com &

백그라운드 프로세스를 포 그라운드로 가져 오려면 fg 명령을 사용하십시오.

fg

fg %1

백그라운드 프로세스를 종료하려면 kill 명령 다음에 프로세스 ID를 사용하십시오.

kill -9 25177

포 그라운드 프로세스를 백그라운드로 이동

백그라운드에서 실행중인 포 그라운드 프로세스를 이동하려면 다음을 수행하십시오.

  1. Ctrl+Z 를 입력하여 프로세스를 중지하고 bg 를 입력하여 중지 된 프로세스를 백그라운드로 이동하십시오.

쉘 종료 후 백그라운드 프로세스 실행 유지

연결이 끊어 지거나 쉘 세션에서 로그 아웃하면 백그라운드 프로세스가 종료됩니다. 대화식 쉘 세션이 끝난 후에 프로세스를 계속 실행하는 방법에는 여러 가지가 있습니다.

한 가지 방법은 내장 쉘 제거를 사용하여 쉘의 작업 제어에서 작업을 제거하는 것입니다.

disown

disown %1

jobs -l 명령을 사용하여 활성 작업 테이블에서 작업이 제거되었는지 확인하십시오. 소유하지 않은 프로세스를 포함하여 실행중인 모든 프로세스를 나열하려면 ps aux 명령을 사용하십시오.

쉘 종료 후에 프로세스를 계속 실행하는 또 다른 방법은 nohup 을 사용하는 것입니다.

nohup 명령은 인수로 지정된 다른 프로그램을 실행하고 모든 SIGHUP (hangup) 신호를 무시합니다. SIGHUP 은 제어 터미널이 닫힐 때 프로세스로 전송되는 신호입니다.

nohup 명령을 사용하여 백그라운드에서 명령을 실행하려면 다음을 입력하십시오.

nohup command &

명령 출력은 nohup.out 파일로 경로 재 지정됩니다.

nohup: ignoring input and appending output to 'nohup.out'

대안

여러 개의 대화식 세션을 동시에 가질 수있는 여러 프로그램이 있습니다.

화면

Screen 또는 GNU Screen은 화면 세션을 시작하고 해당 세션 내에서 여러 창 (가상 터미널)을 열 수있는 터미널 멀티플렉서 프로그램입니다. 화면에서 실행중인 프로세스는 연결이 끊어져도 해당 창이 보이지 않으면 계속 실행됩니다.

툭스

Tmux는 GNU 화면의 현대적인 대안입니다. Tmux를 사용하면 세션을 생성하고 해당 세션 내에서 여러 창을 열 수도 있습니다. Tmux 세션은 영구적이므로 터미널을 닫아도 Tmux에서 실행중인 프로그램이 계속 실행됩니다.

결론

백그라운드에서 명령을 실행하려면 명령 끝에 & 를 포함하십시오.

백그라운드에서 명령을 실행할 때 다른 명령을 실행하기 전에 명령이 완료 될 때까지 기다릴 필요가 없습니다.

nohup fg bg jobs disown terminal