ワイヤレス802.11sメッシュ接続上の2台のコンピューター間の帯域幅、パケット損失、遅延、およびジッターを測定しようとしています。
次のことができる(私の最初の)bashスクリプトを作成しようとしています:
ptpd
、tcpdump
、iperf
)からデータのログ記録を開始します。iperf
送信が終了すると、リモートコンピューターにSSHで接続し、サービスを強制終了する必要があります。このためのアイデアは、これらの3つのステップをforループで実行し、反復ごとにiperfによって送信されるパッケージサイズを増やし、結果のデータをログに記録することです。
ssh Host@adress process
によってリモートPCでプロセスを開始する方法を知っています。
ただし、ログアウトするとプロセスが終了するため、SSHとログアウトを介して複数のプロセスを開始する方法がわかりません。 screen
コマンドとNohup
コマンドを見てきましたが、スクリプトでそれらを使用する方法がわかりません。
前もって感謝します!
編集:
これまでのすべての助けに感謝します。
Nohupを動作させるようになりました。人々が指摘するように、それは非常に簡単でした。これで、メインPCのスクリプトにssh Host@adress Nohup ./script.sh > /dev/null 2>&1 &
が表示されました。これにより、リモートPCでスクリプトが正常に開始され、SSHからログアウトされます。次の問題は、リモートPCでSudoとしてスクリプトを実行する方法です。これはtcpdumpで必要になるためです。
ssh Host@adress **Sudo** Nohup ./script.sh > /dev/null 2>&1 &
を試しても機能しません。
何か案は?
編集2:
誰かが同じ問題で立ち往生している場合、私はこれを解決する方法のガイドを見つけました:
http://www.pantz.org/software/ssh/using_ssh_and_Sudo_instead_of_root_for_remote_commands.html
screen
を使用します。
いくつかの便利なショートカット:
切り離した後、screen -r
を使用してセッションを再開します。スクリーンセッションが切り離されていないが、他の方法でバックグラウンドに移行した(または実際にはまだ別の端末で実行されている)場合もscreen -x
があります。
Nohup
の--help
から;
Usage: Nohup COMMAND [ARG]...
or: Nohup OPTION
Run COMMAND, ignoring hangup signals.
&
コマンドにNohup <whatever you want to run>
を追加するだけです。スポーンされたNohup
プロセスを具体的に強制終了しない限り、それがなくなることはないということです。
screen
またはtmux
を使用すると、Nohupを完全にスキップできます。これにより、リモートホストへの接続が切断された場合でも、プロセスが実行され続けると聞きました(これは、かなり優れた長所の1つです)。ただし、これを行う方法がわからないため、ダウンロード後にman screen
/man tmux
を実行して独自の読み取りを行う必要があります。
プログラムの前にNohup
を付けることができます。
例えば。 Nohup myprogram &
。これにより、プログラムが起動し、すべての出力がNohup.outというファイルに送信されます。また、ログアウト時にsigHUPをキャッチします。
別の解決策は、screen
またはtmux
を実行することです。
答えはあなたの質問にあります。 screen
またはNohup
コマンドを使用します。それらの使い方がわかりませんか?
試してみてください
ssh Host@address Nohup command args &
。 &は、ssh
シェルをローカルシステムのバックグラウンドに配置します。これは、ssh
トンネルが可能な限り長く残ることを意味します。ただし、Nohup
コマンドは、何らかの理由でローカルcommand
プロセスが終了するか、リモートホストへの接続が失われた場合に、リモートシステムで実行されているssh
が終了するのを防ぎます。