プロセスを実行する必要がありますが、使用できません&
。ただし、.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
これは、上記の2番目のtmuxインスタンスに接続されます。
1つの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