SSHログアウト後もプロセスを有効に保つ


5

ワイヤレス802.11sメッシュ接続上の2台のコンピュータ間の帯域幅、パケット損失、遅延、およびジッタを測定しようとしています。

私は次のことができる(私の最初の)bashスクリプトを作ろうとしています:

  1. 別のコンピュータにSSH接続し、サービスからデータの記録を開始します( ptpdtcpdumpiperf
  2. 自分のコンピュータで同じプロセスを起動し、データの記録を開始します。
  3. 一度 iperf 自分のコンピュータでの送信が完了したら、リモートコンピュータにSSHで接続してサービスを終了させる必要があります。

この考え方は、これらの3つのステップがforループで実行されるため、繰り返しごとにiperfによって送信されるパッケージサイズが増加し、結果のデータがログに記録されます。

私はによってリモートPC上でプロセスを開始する方法を知っています ssh host@adress process

しかし、ログアウトするとプロセスが終了するため、SSHおよびログアウトを使用して複数のプロセスを開始する方法についてはわかりません。私は見た screen そして nohup しかし、スクリプト内でそれらを使用する方法がわかりません。

前もって感謝します!

編集:

これまでのすべての助けをありがとう。

私は今はうまくいきませんでした、人々が指摘したようにそれはかなり単純でした。 だから今私は得た: ssh host@adress nohup ./script.sh > /dev/null 2>&1 & 私のメインPCのスクリプトで。 これで、リモート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

回答:


7

つかいます screen

いくつかの便利なショートカット:

  • Ctrl + A + C:新しい "ウィンドウ"を作成する
  • Ctrl + a + n:次の "ウィンドウ"に進む
  • Ctrl + a + p:前の "ウィンドウ"に移動
  • ctrl + a + d:セッションを切り離します(実行を続けます)

取り外した後は screen -r セッションを再開します。またあります screen -x スクリーンセッションが切り離されなかったが、他の方法でバックグラウンドになった(または実際にはまだ別の端末で実行されている)場合。


5

から --helpnohup;

Usage: nohup COMMAND [ARG]...
  or:  nohup OPTION
Run COMMAND, ignoring hangup signals.

単に追加する & あなたに nohup <whatever you want to run> コマンド。あなたが特別に生み出されたものを殺さない限りそれは意味するでしょう nohup プロセス、それは今までなくなることはありません。

あなたは完全にnohupをスキップすることができます screen または tmuxこれは、リモートホストへの接続が切れてもプロセスが実行され続けることを私は聞いています(これはかなりすばらしい強みの1つです)。私はこれを行う方法がわからないので、あなたがすることによってあなた自身の読書をする必要があるでしょう man screen / man tmux それをダウンロードした後。


2

あなたがプログラムを追加することができます nohup

例えば。 nohup myprogram &。これによりプログラムが起動し、すべての出力がnohup.outというファイルに送信されます。ログアウトすると、sigHUPもキャッチします。

別の解決策は実行することです screen または tmux


0

答えはあなたの質問にあります。使用 screen または nohup コマンド。それらの使い方についてあなたは何を理解していませんか?

やってみる

ssh host@address nohup command args &。 &amp;を置きます ssh ローカルシステムのバックグラウンドにシェルで ssh トンネルはできる限り長くなります。しかし nohup コマンドは command 何らかの理由で、ローカルシステムがローカルシステムの ssh プロセスはリモートホストへの接続を終了または失います。


シモンズ:あなたはあなたが実行したいコマンドに引用符を置く必要があります(私は良い測定のために一重引用符を使います)。
qweet

ええ、私は今はたらくことができませんでした、あなたが指摘するようにそれはかなり簡単でした。 ssh host @ adress nohup ./script.sh&gt; / dev / null 2&gt;&amp; 1&amp;。これで、リモートPC上でスクリプトが正常に実行されます。次の問題は、これがtcpdumpに必要なので、sudoとしてリモートPC上でスクリプトを実行することです。
Thomas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.