バックグラウンドで実行されているSSHプロセスのPIDを取得します。

バックグラウンドで実行されているSSHプロセスのPIDを取得します。

だから私は2つのバックグラウンドSSHプロセスを呼び出したいと思います。

ssh -D localhost:8087 -fN aws-gateway-vpc1
ssh -D localhost:8088 -fN aws-gateway-vpc2

これらのゲートウェイではauthenticate_keysファイルを設定できないため、対話型パスワードの入力を求める必要があります。これが私が-fシェルの代わりにそのフラグを使用する理由&です。対話式に認証した後、プロセスはバックグラウンドに配置されます。

$!この場合、最新の[self]バックグラウンドプロセスのpidを取得するためにbash変数を使用できないようです。

後で中断した場合、正しいPIDを見つけるには他にどのようなオプションが必要ですか?

ベストアンサー1

grepでpidを見つけるとエラーが発生する可能性があります。別のオプションはSSHControlPathオプションを使用することですControlMaster。これにより、ssh コマンドが制御ソケットでリッスンし、後続の ssh 呼び出しのコマンドを待機できるようになります。

この試み

ssh -D localhost:8087 -S /tmp/.ssh-aws-gateway-vpc1 -M -fN aws-gateway-vpc1
# (...)
# later, when you want to terminate ssh connection
ssh -S /tmp/.ssh-aws-gateway-vpc1 -O exit aws-gateway-vpc1

このexitコマンドを使用すると、PIDがわからない場合でもプロセスを終了できます。 PIDが本当に必要な場合は、次のcheckコマンドを使用して表示できます。

$ ssh -S /tmp/.ssh-aws-gateway-vpc1 -O check aws-gateway-vpc1
Master running (pid=1234)

おすすめ記事