実行中にいくつかの情報を出力し続けるbashスクリプトがあります。しなければならない
- システムが起動すると自動的に実行されます。
- SSHを使用してこの出力を監視し、間隔を置いてリモートで制御します。
これにはtmuxを使いたいです。それでは、この問題にどのように対処する必要がありますか?簡単にするために、私のシェルスクリプトが次のようになるとしましょう。
ファイル名: start.bash
#!/bin/bash
# just an example for simplicity
watch date
tmuxで実行し、必要に応じて後で接続できるようにするには、別のスクリプトが必要です。名前を使用して新しいtmuxセッションを作成し、他のシェルスクリプトを実行する必要がある部分に問題があります。これを完了したら、それを別のシェルスクリプトに入れて残りを処理できます。簡単だと思います。誰かがこの特定のステップの例を挙げることができますか?
答え1
さまざまな方法でこれを実行できます。
sendキーを使用してセッションを作成した後、これを実行できます。
tmux new -s "remote" -d
tmux send-keys -t "remote" "start.bash" C-m
tmux attach -t "remote" -d
またはシェルを介して:
tmux new -s "remote" -d "/bin/bash"
tmux run-shell -t "remote:0" "start.bash"
tmux attach -t "remote" -d
答え2
サーバーでtmuxセッションを開始して閉じないでください。サーバー上で実行され続けます。クライアントコンピュータからSSHに接続して実行できます。
tmux attach
tmuxセッションで実行されているすべてのエントリに再接続します。サーバーを再起動して起動時に起動するには、/etc/rc.localで実行されているシェルスクリプトでtmuxを起動します。