프로세스를 실행해야 하는데 사용할 수 없습니다 &
. 하지만 .dll을 통해 실행할 수 있습니다 tmux
. 속도:
- 서버 컴퓨터에 SSH를 터미널로 연결합니다.
tmux
- 앱을 실행하고...기다립니다...죄송합니다. 시간이 초과되었습니다...
어떻게(가장 간단한 방법) 애플리케이션으로 돌아가서 나머지 로그를 보시겠습니까?
답변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
.
exit
tmux 세션을 종료하려면 해당 세션에 연결하고 프로그램이 셸에서 정상적으로 실행 중인 경우 프로그램을 종료하기만 하면 됩니다. 또는 tmux 세션 외부에서:
tmux kill-session