우분투 16.04를 사용 하고 있으며 특정 경우 tmux
와 sleep
같이 시간 초과 프로세스를 실행하고 싶기 때문에 (결합 할 때 ) at
버그가 발생 했기 때문에 다음 솔루션이 필요합니다 . 이제 자체 중단없는 메커니즘이 있고 실제로 수동으로 잘 작동하는 것처럼 최상의 대안으로 보입니다 (나는 이미 수동으로 수행 할 수있는 프로세스를 자동화하는 것에 대해서만 질문합니다).nohup
nohup-sleep
tmux
내가 필요한 것:
한 번의 작업으로 다음 3 가지 작업을 수행 할 수있는 방법이 필요합니다.
- 새
tmux
세션 첨부 - 해당 세션에 준비된 명령 세트를 주입합니다
(sleep 30m ; rm -rf dir_name ; exit)
. 특히 긴 줄이 아닌 여러 줄을 선호합니다. - 위의 명령을 실행하면 새
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 을 참조 하십시오 .