백그라운드에서 Linux 명령을 시작하고 터미널에서 프로세스를 분리하는 방법

Baeggeulaundeueseo Linux Myeonglyeong Eul Sijaghago Teomineol Eseo Peuloseseuleul Bunlihaneun Bangbeob



이 가이드에서는 백그라운드에서 명령을 실행하는 방법과 터미널에서 프로세스를 분리하는 방법을 알아봅니다.

전제 조건:

이 가이드의 단계를 수행하려면 다음 구성 요소가 필요합니다.

  • 기능적인 Linux 시스템. 자세히 알아보기 VirtualBox에서 Ubuntu VM 설정 .
  • 에 대한 액세스 sudo 권한이 있는 루트가 아닌 사용자 .

터미널에서 프로세스 실행

명령을 실행할 때마다 프로세스가 터미널 아래에 생성됩니다. 터미널이 닫히면 관련된 모든 프로세스가 자동으로 종료됩니다. 특정 상황에서는 불편할 수 있습니다. 예를 들어:







  • 압도적인 양의 출력 데이터 및 오류/진단 메시지
  • 잠재적으로 미션 크리티컬 프로세스 등의 종료를 초래하는 터미널의 우발적 폐쇄.

이러한 문제를 해결하기 위한 몇 가지 옵션이 있습니다.



  • 백그라운드에서 프로세스 실행
  • 터미널에서 프로세스 분리

백그라운드에서 실행되는 프로세스는 터미널 출력을 압도하지 않습니다. 또한 터미널은 추가 명령을 자유롭게 실행할 수 있습니다. 분리된 프로세스의 경우 터미널을 닫아도 종료되지 않습니다.



백그라운드에서 프로세스 시작

대부분의 경우 명령을 완료하는 데 상당한 시간이 걸릴 수 있습니다. 일반적으로 사용자는 명령이 완료될 때까지 기다려야 합니다. 예를 들어 텍스트 편집기를 사용하는 경우 편집기를 닫을 때까지 셸을 사용할 수 없습니다.





시연을 위해 'yes' 명령을 사용합니다.

$ 남성



방법 1:

실행 중인 프로세스를 백그라운드로 보낼 수 있는 몇 가지 방법이 있습니다.

먼저 프로세스를 종료하지 않고 중지합니다. 이렇게 하려면 다음 명령을 실행하고 'Ctrl + Z'를 누릅니다.

$ '안녕 세상' > / 개발자 / 없는

이제 'bg' 명령을 실행하여 백그라운드에서 프로세스를 보냅니다.

$ bg

백그라운드로 푸시되면 프로세스가 다시 시작됩니다. 다음 명령은 백그라운드에서 실행 중인 모든 작업을 나열합니다.

$ 일자리

방법 2:

이전 방법에서는 프로세스가 먼저 포그라운드에서 실행되기 시작했습니다. 프로세스를 일시 중지하고 백그라운드로 보낸 다음 다시 시작했습니다. 대신 백그라운드에서 프로세스를 직접 실행할 수 있습니다.

이렇게 하려면 명령 끝에 '&' 기호를 추가합니다.

$ '오 롱 존슨' > / 개발자 / 없는 &

여기에서 생성된 프로세스는 백그라운드에서 자동으로 실행됩니다. 확인하려면 백그라운드 작업 목록을 확인하십시오.

$ 일자리

방법 3:

다음을 사용하여 백그라운드에서 프로세스를 시작할 수도 있습니다. tmux , 단일 창 내에서 여러 터미널 세션을 관리할 수 있는 강력한 멀티플렉서. Linux에는 사전 설치되어 있지 않습니다. 그러나 모든 주요 Linux 배포판에서 사용할 수 있습니다. 자세히 알아보기 리눅스에 tmux 설치 .

다음 예에서는 tmux를 사용하여 대상을 ping하고 출력을 기록합니다.

$ tmux 새로운 -디 '핑 -c 9 127.0.0.1 > 핑.로그'

로그 파일은 명령이 성공적으로 실행되는지 여부를 확인합니다.

$ 고양이 ping.log

tmux가 할 수 있는 일의 한 예일 뿐입니다. 자세히 알아보기 예제가 있는 tmux .

작업을 포그라운드로 되돌리기

작업을 포그라운드로 되돌리려면 'fg' 명령을 사용합니다. 또한 jobs 명령에서 작업 번호가 필요합니다.

먼저 포그라운드로 가져올 작업을 결정합니다.

$ 일자리

이제 'fg' 명령을 사용합니다.

$ fg %< 작업_번호 >

터미널에서 프로세스 분리

포그라운드에서 실행 중이든 백그라운드에서 실행 중이든 터미널이 닫히면 터미널과 관련된 모든 프로세스가 종료됩니다. 프로세스 종료를 피하기 위해 대상 프로세스를 터미널/쉘에서 분리합니다.

방법 1:

프로세스를 소유하지 않으려면 먼저 백그라운드 프로세스가 필요합니다.

$ '쿼티' > / 개발자 / 없는 &

실행 중인 백그라운드 작업 목록을 확인합니다.

$ 일자리

대상 백그라운드 작업의 일련 번호를 기록해 둡니다. 이제 'disown' 명령을 사용하여 터미널에서 분리합니다.

$ 자기 것이 아니라고 말하다 %< 작업_번호 >

이제 대상 작업이 작업 목록에서 사라집니다.

$ 일자리

그러나 백그라운드에서 실행 중인 프로세스를 계속 볼 수 있습니다.

$ 추신 에게

방법 2:

상위 터미널에서 프로세스를 분리하는 또 다른 방법은 'nohup' 명령을 사용하는 것입니다. 터미널을 닫은 후에도 백그라운드에서 프로세스를 계속 실행합니다.

'nohup'의 사용법은 다음과 같습니다.

$ 노홉 < 명령 > &

작업이 성공적으로 생성되었는지 확인합니다.

$ 일자리

방법 3:

이 방법은 대상 프로세스를 완전히 분리합니다. GUI 앱을 분리하는 보다 효과적인 방법입니다.

예를 들어 Firefox를 시작하고 터미널에서 완전히 분리하려면 다음 명령을 사용하십시오.

$ 파이어폭스 개발자 / 없는 &>/ 개발자 / 없는 &

여기:

  • 그만큼 /dev/null 기록된 모든 데이터를 제거하는 Linux의 특수 장치입니다.
  • 이전 명령에서 입력을 읽고 출력을 다음으로 보냅니다. /dev/null . 자세히 알아보기 /dev/null을 사용하는 다른 방법 .

결론

백그라운드에서 프로세스를 실행하는 다양한 방법을 시연했습니다. 또한 상위 터미널에서 프로세스를 분리하는 방법을 보여주었습니다. 이러한 기술은 터미널 또는 스크립트 실행 .

특정 패턴에서 특정 명령을 실행해야 하는 경우 이를 오프로드할 수 있습니다. 체계적인 서비스 . 원격 시스템의 경우 다음과 같은 타사 도구를 사용할 수도 있습니다. 거의 모든 것을 자동화하는 Ansible .

행복한 컴퓨팅!