현재 세션 내에서 새로운 tmux 세션에서 코드를 실행하는 방법은 무엇입니까? 때문에 (결합 할 때 )

우분투 16.04를 사용 하고 있으며 특정 경우 tmuxsleep같이 시간 초과 프로세스를 실행하고 싶기 때문에 (결합 할 때 ) at버그가 발생 했기 때문에 다음 솔루션이 필요합니다 . 이제 자체 중단없는 메커니즘이 있고 실제로 수동으로 잘 작동하는 것처럼 최상의 대안으로 보입니다 (나는 이미 수동으로 수행 할 수있는 프로세스를 자동화하는 것에 대해서만 질문합니다).nohupnohup-sleeptmux

내가 필요한 것:

한 번의 작업으로 다음 3 가지 작업을 수행 할 수있는 방법이 필요합니다.

  1. tmux세션 첨부
  2. 해당 세션에 준비된 명령 세트를 주입합니다 (sleep 30m ; rm -rf dir_name ; exit). 특히 긴 줄이 아닌 여러 줄을 선호합니다.
  3. 위의 명령을 실행하면 새 tmux세션 에서 stdin으로 작성되는 순간이 설정 됩니다.

즉, tmux그 원인을 위해 특별히 작성된 다른 세션 에서 코드 세트를 실행하고 싶지만 한 번의 작업으로 모두 수행하고 싶습니다 .


노트:

  • 나는 원래의 작업 세션 (내가 대부분 일하는 세션)에서 모든 작업을 수행하려고합니다. 일반적으로 새로 생성 된 세션을 방문 할 의도가 없으며 자동으로 실행되는 코드로 세션을 만들고 싶습니다.

  • 가능하다면 heredoc 솔루션을 선호합니다. 가장 효율적이라고 생각합니다.



답변

예를 들어 실행하려는 코드를 넣으면 원하는 것을 /opt/my_script.sh매우 쉽게 수행 할 수 있습니다.

tmux new-session -d -s "myTempSession" /opt/my_script.sh

그러면 “myTempSession”이라는 분리 된 새 세션이 시작되어 스크립트가 실행됩니다. 나중에 첨부하여 첨부 파일을 실행하여 수행중인 작업을 확인할 수 있습니다 tmux attach-session -t myTempSession.

그건 내 의견으로는 가장 간단하고 우아한 솔루션입니다. tmux를 사용하여 stdin에서 명령을 실행하는 쉬운 방법을 알고 있지 않습니다 ( “heredocs에서 읽음”). 주위를 해킹하면 할 수도 있지만 여전히 해킹이 될 것입니다.

예를 들어, 여기에 내가 원하는 동작을 시뮬레이션 (= A 히어 닥에서 새 TMUX 세션에서 코드를 실행할 수 있습니다. 임시 파일이 생성 될 때 없음 쓰기, 서버의 하드 드라이브에서 발생 위에 제시 한 명령을 사용하는 해킹 /dev/shm이다, tmpfs) :

(
  cat >/dev/shm/my_script.sh &&
  chmod +x /dev/shm/my_script.sh &&
  tmux new-session -d '/dev/shm/my_script.sh; rm /dev/shm/my_script.sh'
) <<'EOF'
    echo "hacky, but works"
EOF

답변

분리 된 분할 창 에서 send-keys 명령 사용에 대한 예제는 /server/339390/run-command-in-detached-tmux-session 을 참조 하십시오 .