ポート22でOpenSSHを使用してログインし、ポート3306と80度トンネルしているとします。
ポート80は、3つのポート(22、3306、80)の両方でトンネリングされる最後のポートです。
$ sudo ssh UWU@IP -L 80:localhost:80
ポート80トンネルプロセスのみを終了する方法は?
私は最善の方法は、どのような方法でポート80トンネルを自動ターゲットにすることだと思います。もう一つの方法は、3つのトンネルのうち最後のトンネルを目指すことです。
私がこれを尋ねる理由は次のとおりです。
ps aux | grep ssh
プロセスを見つけて具体的に終了できますが、自動的には実行されません。
ベストアンサー1
問題のあるプロセスのPIDを見つけるには、構文を使用することをお勧めします$!
。
ステージ1:プロセスを開始しますが、今回は任意のPID値を保持する変数を使用します。
sudo ssh blah@blah 80:localhost:80 & arbpid=$!
2番目のステップ:トンネルを作成するときにのみ変数を保存する場合は、arbpid
それを使用してスクリプトの最後でプロセスを終了できます。
kill $arbpid
つまり、ここで行うことは、SSHトンネルに任意のタグ(変数とその値)をタグ付けすることです。その後、それを終了ターゲットとして指定します。
コマンドと変数の間に & 記号があります。 Unixコマンドの後の単一のアンパサンドと同様に、これはアンパサンドの前のコマンドが別のサブプロセス(バックグラウンド)で実行されるのに対し、2番目のコマンド(この場合は変数の生成)は現在のプロセス(フォアグラウンド)で実行されます。仕事。