Tmux内で長時間実行されるプロセスを実行することは常に良い習慣です。 SSH経由でリモートシステムを操作する場合のセッション。これは、ネットワーク接続が突然切断されたときに、実行中のプロセスの制御を失うことを防ぐためです。何らかの理由でネットワーク接続が切断された場合に備えて、Tmuxセッション内のプロセスはリモートシステムで実行され続けるため、ネットワーク接続がオンラインに戻ったら、「tmuxattach」コマンドを使用してTmuxセッションに再接続できます。そもそもTmuxセッションを開始するのを忘れた場合はどうなりますか?どんなに注意を払っても、Tmuxセッションの開始を忘れることがあります。この問題を回避する簡単な方法は次のとおりです。 SSH経由でログを記録するときに、リモートシステムでTmuxセッションを自動開始できます。これは、ローカルシステムからSSH経由でリモートLinuxサーバーをアップグレードするときにネットワーク接続が失われた場合に特に役立ちます。次のヒントでは、ローカルまたは別のシステムからSSH経由でリモートでLinuxシステムにログインしようとすると、Tmuxセッションが自動的に開始されることに注意してください。
SSH経由でログインするときにリモートシステムでTmuxセッションを自動開始する
SSH経由で接続するときにTmuxセッションを自動開始するには、リモートシステムの〜/ .bash_profileを編集します ファイル:
$ nano ~/.bash_profile
ファイルが利用できない場合は、作成するだけです。
そして、それに次の行を追加します:
if [ -z "$TMUX" ]; then tmux attach -t default || tmux new -s default fi
ファイルを保存して閉じます。ログアウトして、リモートシステムに再度ログインします。 'default'という名前の新しいTmuxセッションに移動します 。
ここで、Tmuxセッション内のプロセスを開始し、 Ctrl + bを押してプロセスをデタッチします。 続いてd 。ネットワーク接続が切断された後も、プロセスはTmuxセッション内で実行され続けます。ネットワーク接続が回復したら、リモートシステムにSSHで接続すると、ジョブがまだ実行中であることがわかります!!
次のアニメーション出力をご覧ください:
上記の出力で私が行ったことを明確にしましょう。
- ローカルシステムからSSH経由でリモートUbuntuサーバーに接続します。 「default」という名前の新しいTmuxセッションが自動的に開始されます。
- Tmuxセッション内で、CPU速度を監視するコマンド(例:watch grep \ "cpu MHz \" / proc / cpuinfo)を実行します。
- 次に、 Ctrl + bを押してセッションから切り離しました およびd 。
- 次に、「tmux ls」コマンドを使用してTmuxセッションを一覧表示し、SSHセッションを終了します。
- 最後に、SSH経由でリモートシステムに再接続し、プロセスが中断することなくTmuxセッション内で実行され続けているかどうかを確認します。
ご理解いただければ幸いです。
Tmuxセッションの自動開始を停止するには、リモートシステムの〜/ .bashrcから以前に追加した行を削除するだけです。 または〜/ .bash_profile ファイル。
この簡単なヒントは、リモートジョブの制御を失うことを回避するのに役立ちます。毎回手動でTmuxを起動する必要はありません。このガイドで説明されているように、リモートシステムにSSHで接続するたびにTmuxが自動的に起動するようにするだけです。
推奨される読み物 :
- ログイン時にLinuxで画面セッションを自動開始する方法
- レプティル–実行中のプロセスを閉じずに1つのターミナルから別のターミナルに移動します