실행으로 인해 휴면 상태가 된 프로세스는 실행 중인 작업을 나열하고 작업 ID를 할당하여 다시 포그라운드로 가져올 수 있습니다 ^Z
. 그런데 채용정보를 개별적으로 나열하려고 하면$ jobs
fg %id
화면동일한 터미널에서 결과가 없습니다. 이 목표를 달성하는 방법은 무엇입니까?
내가 원하는 것은 동일한 터미널의 별도 화면에서 동일한 프로세스를 종료하지 않고 시작하는 것입니다.
답변1
당신은 할 수 없습니다. 셸 작업(포그라운드 및 백그라운드 프로세스) 처리는 각 개별 셸 인스턴스에서 수행됩니다. 하나의 대화형 셸에서 다른 대화형 셸로 작업을 마이그레이션할 수 없습니다.이내에그것은 마치 screen
.
터미널은 실제로 이것과 아무 관련이 없습니다. 쉘만 실행합니다.
tmux
할 수 있는 일은 터미널 멀티플렉서(예: 또는 )를 사용하여 전체 셸 세션을 마이그레이션하는 것입니다 screen
. 한 터미널 에서 세션을 분리 screen
하거나 세션을 설정 tmux
한 후 동일한 컴퓨터의 다른 터미널에 다시 연결하면 터미널 중 하나의 쉘 세션을 다른 터미널로 이동할 수 있습니다.
tmux
이는 먼저 시작한 tmux
다음 세션 내에서 프로그램을 시작하여 수행됩니다 tmux
. 프로그램이 실행되는 동안 prefixd(기본값 prefix은 )을 눌러 세션을 Ctrl+B분리 할 수 있습니다. tmux
그런 다음 다른 터미널에서 명령을 실행하여 세션을 tmux attach
재개하십시오 . tmux
분리는 명령을 통해서도 수행할 수 있습니다 tmux detach
.
screen
tmux
시스템 설명서를 참조하세요 .
답변2
터미널은 프로세스(예: 셸)에 대한 뷰어입니다. 터미널 자체는 어떤 명령도 실행하지 않습니다. 이것이 셸의 목적입니다. 하지만 터미널이 없으면 셸이나 셸에서 실행되는 모든 프로그램과 상호 작용할 수 없습니다.
일반적으로 터미널 창을 닫으면 닫으라는 신호를 셸에 보내고, 그 결과 실행 중인 모든 프로세스가 종료됩니다.
에서 프로세스를 실행할 수 있습니다 screen
. 그 기능은 쉘이 실행될 "가상 터미널"을 생성하는 것입니다. "실제" 터미널 창을 세션에 연결하고 제공된 screen
가상 터미널을 제어할 수 있습니다. screen
최종 효과는 완전히 정상적으로 느껴지지만 가상 화면에서 분리하고 셸을 실행 상태로 둘 수도 있다는 것입니다.
screen # Create a leader and a virtual terminal/screen running a shell
screen -ls # List sessions (attached/detached)
screen -r # Reattach to the single detached session
screen -r {identifier} # Reattach to the named detached session
screen -md {command...} # Make a new detached session running {command...}
마지막으로 Ctrl Ad현재 세션에서 벗어나 Ctrl A?대화형 명령 목록을 가져옵니다.