tmux를 사용하는 가장 간단한 방법, 명령은 프로세스를 반환합니다.

tmux를 사용하는 가장 간단한 방법, 명령은 프로세스를 반환합니다.

프로세스를 실행해야 하는데 사용할 수 없습니다 &. 하지만 .dll을 통해 실행할 수 있습니다 tmux. 속도:

  1. 서버 컴퓨터에 SSH를 터미널로 연결합니다.
  2. tmux
  3. 앱을 실행하고...기다립니다...죄송합니다. 시간이 초과되었습니다...

어떻게(가장 간단한 방법) 애플리케이션으로 돌아가서 나머지 로그를 보시겠습니까?

답변1

원격 서버에 다시 연결할 때 tmux 세션을 나열할 수 있습니다.

tmux ls
0: 4 windows (created Tue Oct 15 07:55:07 2019) [255x62]
1: 2 windows (created Tue Oct 15 07:55:07 2019) [255x62]

그런 다음 대상 세션에 다시 연결할 수 있습니다.

tmux attach-session -t 1

이는 위에 나열된 두 번째 tmux 인스턴스에 연결됩니다.

하나의 tmux 세션만 실행하는 경우 단축어를 사용할 수 있습니다.

tmux a

첫 번째 세션을 다시 연결합니다.

답변2

중단되기 쉽거나 종료하려는 경우 -session을 ssh사용할 수 있습니다 nohup. 이를 통해 세션에서 프로세스를 분리하고 ssh백그라운드에서 실행하고 출력을 파일에 저장할 수 있습니다.

nohup COMMAND &

기본 출력은 $HOME/nohup.out이거나 리디렉션될 수 있습니다.

nohup COMMAND > mylogs.log &

nohup을 실행하면 PID다음과 같은 프로세스에 대한 정보가 표시됩니다.

$ nohup bash -c "while ((1)) ; do echo 1 ; sleep 1 ; done" > echo.log &
[1] 21816

PID를 기록하고 다음과 같은 방법으로 프로세스 상태를 확인하세요.ps <PID>

$ps 21816
  PID TTY      STAT   TIME COMMAND
21846 pts/6    S      0:00 bash -c while ((1)) ; do echo 1 ; sleep 1 ; done

출력이 제공되지 않는다는 것은 PID프로세스가 더 이상 활성 상태가 아니라는 것을 의미합니다(취소, 중단, 중지, 완료 등).

답변3

데모 목적으로 이를 원격 호스트에서 실행하고 싶다고 가정해 보겠습니다.

for i in $(seq 60) ; do
    echo "$i seconds of 60"
    sleep 1
done

....그리고 SSH 연결이 중단되어도 계속 실행되기를 원합니다.

이것가장 간단한 방법tmux로 이 작업을 수행하기 위해 내가 생각할 수 있는 것은 다음과 같습니다.

tmux new-session -d
tmux new-window bash -c 'for i in $(seq 60) ; do echo "$i seconds of 60" ; sleep 1 ;done'

그런 다음 아무 일도 일어나지 않은 것처럼 쉘 프롬프트로 돌아갑니다. 그러나 스크립트는 메모리의 tmux에서 실행됩니다. 셸을 종료하면(또는 SSH 연결이 중단되면) 계속 실행됩니다.

tmux 세션에 연결하여 터미널에서 실행 중인 프로그램을 보려면 다음 명령어를 실행하세요.

tmux attach-session

tmux 세션을 종료하고 백그라운드에서 실행되도록 하려면 ctrl-b아이콘을 클릭하세요 d.

exittmux 세션을 종료하려면 해당 세션에 연결하고 프로그램이 셸에서 정상적으로 실행 중인 경우 프로그램을 종료하기만 하면 됩니다. 또는 tmux 세션 외부에서:

tmux kill-session

관련 정보