여러 대화형 작업을 중지하지 않고 하나의 터미널을 사용하는 방법은 무엇입니까?

여러 대화형 작업을 중지하지 않고 하나의 터미널을 사용하는 방법은 무엇입니까?

동시에 작동하고 -way에서 유용한 출력을 제공해야 하는 client.sh두 개의 쉘 스크립트가 있습니다 . 그리고 하나의 터미널만 사용할 수 있습니다. 그래서 나는 무슨 일이 일어나고 있는지 확인하기 위해 그들 사이를 전환해야 하지만 멈추지 않고 ( + ). 이 작업을 수행하는 방법을 알 수 없습니다. 내가 달릴 때server.shwatch
CtrlZ

./server.sh &

Enter그런 다음 터미널에 입력합니다 (실행하기 전에클라이언트.sh) 그러나 그것은 보여줍니다

[1]+ Stopped                   ./server.sh

터미널에서 작업을 중지하지 않고 출력(내부 상태)을 보기 위해 전환하는 편리한 방법이 있습니까?

답변1

사용 screen:

$ screen -S my-job

그러면 "my-job"이라는 새 screen세션이 시작되어 연결됩니다.

$ ./server.sh

server.sh그러면 세션 에 연결된 첫 번째(기본) 터미널에서 스크립트가 시작됩니다 screen. 이제 Ctrl-를 누른 A다음 Ctrl-를 누르세요 C. 이것은새 터미널을 연결하고 전환하십시오. 이제 다음을 실행할 수 있습니다.

$ ./client.sh

그리고 그 출력을 관찰해보세요. 앞뒤로 전환하려면 Ctrl-를 누른 A다음 Ctrl-를 A다시 누르세요.

screen프로그램이 실행 중인 상태 에서 연결을 끊으려면 Ctrl-를 누른 A다음d에칭. 다시 연결하고 출력을 보려면 다음을 사용하십시오.

$ screen -x my-job

다음을 수행하여 연결하는 동안 두 스크립트의 출력을 한 번에 볼 수도 있습니다.

  • Ctrl- 를 누른 A다음s에스당신의 견해를 쪼개십시오.
  • Ctrl-를 누른 A다음 Tab하위 분할로 이동하려면
  • Ctrl- 활성 터미널 목록을 열고 첫 번째 터미널을 선택합니다(0번째 터미널은 기본적으로 상단 분할에 연결됨) A."

답변2

당신이 찾고 있는 것은 Bash의 작업 제어입니다. 이에 대한 모든 내용은 'JOB Control'( bash의 매뉴얼 페이지에 man bash입력)을 검색하여 읽을 수 있습니다 ./^JOB CONTROL

그럼에도 불구하고 command &해당 명령은 여전히 ​​백그라운드에서 실행되고 있어야 합니다. jobsbash 명령 으로 이를 확인할 수 있습니다 . 그러면 모든 백그라운드 작업, 작업 번호 및 상태가 나열됩니다.

bg n또는 를 사용하면 %n &작업 번호 n으로 중지된 작업을 재개할 수 있습니다(예: 작업 번호 5를 재개하려면 bg 5).

fg n또는를 사용하면 %n배경에서 다시 전경으로 작업을 가져올 수 있습니다.

도움이 되었기를 바랍니다.

답변3

여러 터미널을 동시에 실행하려면 screen(1)이나 tmux(1) 같은 것을 사용하세요. 로그아웃하고 다른 곳에서 다시 가져올 수도 있습니다.

예를 들어 Gnome Terminal에서 탭을 사용하세요.

bash(1)에서 작업 제어를 사용하여(정보 파일의 관련 부분을 읽으십시오) 작업을 중지/백그라운드/포그라운드로 수행하십시오.

관련 정보