명령이 완료 될 때 창 / 창이 닫히지 않도록 방지-TMUX


33

tmux.conf파일에는 창을 열고 이름을 지정하고 설정 창 등을 구성하도록 구성되어 있습니다.

그러나 내가 가진 한 가지 문제는 창 중 하나가 명령을 시작 ls하면 명령이 완료되면 (즉시) 창이 닫히는 것입니다. 이 동작을 막을 방법이 있습니까? 또는 명령이 완료된 후 일반 쉘로 떨어 졌습니까?

창을 시작할 때 쉘-> 실행 명령을 시작해야한다고 가정하지만 방법을 알아낼 수 있으면 망할 것입니다. 나는이 문제에 대해 약간의 구글 검색을했지만 짧게 나왔다.

답변:


22

몇 가지 옵션이 있습니다.

  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 상태로 유지하여 출력을 검토 할 수 있는 옵션 에 대한 자세한 내용 은 jasonwryan의 답변 을 참조하십시오 .

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

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

고마워요! 굉장한 답변, 2 번과 4 번은 내가 일한 것이지만 1 번도 훌륭한 대안으로 보입니다. 모든 도움을 주셔서 감사합니다, 정말 감사합니다 (둘 다).
스튜

1
# 1의 장점은 명령이 셸 기록에 남아 있고 쉽게 다시 실행할 수 있다는 것입니다. 명령이 크고 못 생겼다면 매우 도움이됩니다.
goertzenator

1
그것은 start-server명령 없이 저를 위해 일하고 있습니다. 필요하다면 자동으로 시작된다고 생각합니다. 그럼에도 불구하고 명시 적으로 호출하는 이점이 있습니까?
luator

1
@luator tmux이 답변을 작성한 후 서버를 찾지 못하면 자동 시작이 추가 된 것으로 생각됩니다. 필요한 경우 버전이 서버 프로세스를 생성하면 어떤 이점도 모릅니다.
Caleb

13

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

종료시 종료 [on | off]
이 플래그가 설정된 창은 프로그램이 종료 될 때 소멸되지 않습니다. 창은 respawn-window 명령으로 다시 활성화 될 수 있습니다.

리스폰 과정을 단순화하기 위해 키에 바인딩하는 것이 좋습니다.

bind-key R respawn-window

이렇게하면 프로그램이 종료 될 때 죽은 창이 남지 않게됩니다.


나는 거기에 도착했다! 시간이 부족하여 답변을 수정해야한다고 결정했습니다. 예, 이것이 세 번째 옵션입니다. 가장 큰 단점은 다시 작성하지 않고 재사용 할 수없는 읽기 전용 창을 남겨둔다는 것입니다.
Caleb

좋은 지적. (반) 해결 방법으로 업데이트했습니다.
jasonwryan

창에서 작동합니까?
azmeuk 2016 년

1
명령 행에서이를 설정하는 방법은 다음과 같습니다.tmux set-option remain-on-exit on
rmanna

1
@azmeukset-option -g remain-on-exit on bind-key r respawn-pane
HappyFace

1

다음은 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.