현재 세션 내에서 새로운 tmux 세션에서 코드를 실행하는 방법은 무엇입니까?


13

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

내가 필요한 것:

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

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

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


노트:

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

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

답변:


18

예를 들어 실행하려는 코드를 넣으면 원하는 것을 /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

1
친애하는 마리오. 항상 답을 읽으십시오. 잘 이해하고 있는지 잘 모르겠습니다. 잘못했는지 알려주세요. 1.두 가지 방법이 있습니다. 두 가지 방법이 있습니다. 하나는 임시 스크립트 (코드가 포함 된)를 작성하고 작성하여 실행하고 두 번째는 heredoc입니다. 방법. 2.두 번째 방법이 작동하면 (각 에코 행에 heredoc의 각 코드 행이 포함 된 경우) 왜 Bash 유효한 코드 인 경우이를 해킹으로보아야합니까? heredoc의 행이 에코되고 정기적으로 heredoc에서 실행되지 않기 때문에?
JohnDoea

2
@Benia 그것은 어떤 유닉스 시스템에서만 작동하기 때문에 해킹 /dev/shm입니다. 단순히 일반 파일에 스크립트를 작성하고로 시작하는 것보다 더 복잡하고 읽기 어렵고 이해하고 유지 관리하기 때문에 해킹입니다 tmux.
Kusalananda

1
@Kusalananda가 설명했듯이, 코드 실행에 대한 heredocs는 일반적으로 나쁜 습관입니다. 추악하고 유지하기가 쉽지는 않지만 작동하지만 매우 간단한 작업 을 수행하는 로터리 방법을 찾아야 합니다. 답의 첫 번째 코드 블록과 두 번째 코드 블록을 비교하십시오. 작동 방식을 알 수 있습니까? 그렇게하는 데 시간이 얼마나 걸립니까? 그건 TMUX이 (내가도 고려하지 않을 것이다 추한 있도록도 - 더 - 해키 방법에 대한 저장) 표준 입력에서 명령을 실행할 수있는 방법이 없기 때문에 외부 스크립트가 있습니다, 해킹의 유일한 합니다 (회답 1.방법 질문의) .
Mario Vitale

1
죄송합니다. 첫 번째 샘플에서 실수가 발생했습니다 (인수를 사용하는 경우 "new-session"명령은 암시되지 않습니다). 이제 수정되었습니다.
Mario Vitale

1
이제 실행할 때 tmux new-session -d -s "myTempSession" /opt/my_script.sh코드를 붙여 넣을 수있는 임시 파일을 열지 않습니다 ... 필요한 것은 현재 세션에서 직접 스크립트를 열거 나 적어도 새 세션으로 이동 한 다음 직접으로 이동하는 것입니다. 현재 세션. BTW 감사의 말을 전할 수있는 최소한의 노력으로 11 시간 안에 현상금을 줄 수 있으므로 여러분의 모든 도움에 대해 현상금을 줄 계획입니다.
JohnDoea

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