명령 완료 시 창/창이 닫히지 않도록 방지 - tmux

명령 완료 시 창/창이 닫히지 않도록 방지 - tmux

tmux.conf파일에서는 창 열기, 창 이름 지정, 창 설정 등을 구성합니다.

그러나 내가 가진 한 가지 문제는 창 중 하나가 명령을 시작하면 ls명령이 완료된 후 해당 창이 자체적으로 (즉시) 닫힌다는 것입니다. 이 동작을 방지할 수 있는 방법이 있나요? 아니면 명령이 완료된 후 일반 셸로 돌아가도록 하시겠습니까?

나는 창이 시작될 때 쉘을 시작해야 한다고 가정하고 -> 명령을 실행하지만, 그렇게 하는 방법을 알아낼 수 있다면 망할 것입니다. 이 문제에 대해 Google에서 검색했지만 답변을 찾지 못했습니다.

답변1

몇 가지 옵션이 있습니다.

  1. 창에서 실행하는 대신 ls쉘을 실행하고 쉘 키 입력을 보내 실행하십시오.

    tmux start-server  
    tmux new-session -d -s session  
    tmux new-window -t session:1  
    tmux send-keys -t session:1 ls C-m
    
  2. 다른 명령을 실행한 후 bash 셸이 남도록 일련의 명령을 실행할 수 있습니다.

    tmux start-server  
    tmux new-session -d
    tmux new-window 'ls;bash -i'
    
  3. 바라보다제이슨 소변의 답변remain-on-exit출력을 볼 수 있도록 프로세스가 종료된 후에도 창을 활성 상태로 유지하는 옵션에 대한 자세한 내용입니다 .

  4. 명령의 출력을 살펴볼 가치가 있다면 새로 고칠 가치가 있을 것입니다. 무언가의 출력을 모니터링하는 경우 watch주기적으로 새로운 출력을 얻을 수 있습니다. 이는 다음 창에서 잘 작동합니다 tmux.

    tmux start-server  
    tmux new-session -d
    tmux new-window 'watch -n 60 ls'
    

답변2

다음 remain-on-exit옵션을 사용할 수 있습니다.

출구로 나가세요 [떠나세요]
이 플래그가 설정된 창은 실행 중인 프로그램이 종료될 때 삭제되지 않습니다. respawn-window 명령을 사용하여 창을 다시 활성화할 수 있습니다.

리스폰 프로세스를 단순화하려면 이를 키에 바인딩할 수 있습니다.

bind-key R respawn-window

이렇게 하면 데드 창을 남기지 않고 프로그램이 종료됩니다.

답변3

send-keys다음은 @Caleb이 권장하는 접근 방식을 사용한 확장된 예입니다.

#!/bin/sh
tmux start-server
tmux new-session -d -n 'mywindowname'
tmux send-keys -t mywindowname 'cd notes' Enter 'vim whiteboard/tasks.md' Enter
tmux new-window -d -n 'secondwindowname' # this -d prevents focus from changing to the new window
tmux -2 attach-session -d

답변4

&& bash아마도 명령 뒤에 추가하면 충분할 것입니다.

내 예:

tmux new-session -d 'ls && echo && bash' \; split-window -d 'vi' \; attach

관련 정보