백그라운드에서 명령을 설정하고 터미널을 닫고 다시 fg로 가져 오는 방법은 무엇입니까? 실행하고 나중에 전경으로 가져 오는 방법을

백그라운드에서 명령을 실행하고 나중에 전경으로 가져 오는 방법을 찾으려고합니다. 사람들이 간단하다고 말한 곳에서 튜토리얼과 답변 &을 얻었습니다. 명령 끝에 추가 하여 백그라운드에서 실행하십시오. 단일 터미널 창에서만 작동합니다. 하나의 터미널에서 백그라운드로 명령을 넣고 터미널을 다시 연 후에 다시 전경으로 가져 가고 싶습니다.

예:

$ grunt &
$ jobs
$ [1]+  Running  grunt &

물론 터미널을 닫은 후에는 하나의 작업이 없습니다.

다음 예 :

$ grunt & disown #the same behavior has: $ setsid grunt &
$ jobs
$ [nothing] #but ps shows that grunt is working

after close terminal, grunt doesn't work

내가 뭘 잘못 했어? 아무도 백그라운드에서 명령을 실행하고 다시 포 그라운드로 가져 오는 방법을 설명 할 수 있습니까?



답변

당신이 원하는 방식으로는 불가능합니다.

몇 가지 기본 개념을 살펴 보겠습니다.

  • 프로세스 그룹은 한 번에 모두 신호를 보낼 수있는 관련 프로세스의 모음입니다.
  • 세션은 단일 터미널 장치 (제어 터미널이라고도 함)에 연결되거나 터미널에 연결되지 않은 프로세스 그룹의 모음입니다.

터미널을 닫은 경우 세션의 모든 프로세스가 초기화 프로세스의 상위 프로세스 (데몬)를 제외하고 작동하지 않습니다. 그리고 그들에게 제어 터미널을 다시 줄 방법이 없습니다.

다시 말해서 POSIX 시스템에서 프로세스 렌더링은 매우 제한적이며 (데몬 화는 예외입니다) 요구 사항을 충족 할 수 없습니다.


답변

  1. 설치 screen:

    sudo apt-get install screen
  2. 시작 screen:

    screen -S session_name
  3. 필요한 명령을 실행하십시오.

  4. screen터미널에서 분리 하십시오 (명령은 여전히 ​​실행 중입니다).

    CTRL+ a+를 누릅니다d

  5. 터미널을 닫습니다

  6. 다른 터미널을 열고 마지막 screen세션을 다시 연결하십시오 .

    screen -r

자세한 내용과에 대한 추가 옵션을 보려면 screen의 모습 man screen.


답변

시도해 보셨습니까? byobu또는 tmux터미널 멀티플렉서입니다. 정확히 당신이 찾고있는 것은 아니지만 비슷한 행동을합니다.

byobu-screen

그런 다음 명령을 실행하여 분리하십시오.

byobu-screen -d

다시 시작하려면

byobu-screen -r

참조 https://help.ubuntu.com/community/Screen를