SSHを介してリモートサーバーに接続し、特定のPIDを見つけて終了します。

SSHを介してリモートサーバーに接続し、特定のPIDを見つけて終了します。

サーバーにTelnetで接続し、特定のポートのpidを探したいと思います。その後、そのPIDを殺します。

私はこれを試しました。

ssh -T [email protected] ; "netstat -lnpt ; awk '$4 ~ /:2020$/ {sub(/\/.*/, "", $7); print $7}'" 

netstatこれを行うには、コマンドを使用する必要があります。

ベストアンサー1

あなたはそれを逃しましたパイプの特徴|代わりに;)コマンドを使用してください。私はこれを提供する:

ssh -t [email protected]  "sudo netstat -plnt | grep 2020 | awk '{print \$7}' | sed s+/.*++g | sort -u | xargs kill"

sudoサーバーにインストールされてアクセスできるとします。私のテストでは、netstatオプションを正しく使用するためにこの機能が必要になることがあります-p

私はawkスクリプトを複雑すぎるのを避けるためにここでgrep+を使用することを好みます(私の考えでは)。sed

  • -tsudo:コマンドを実行するためのユーザーパスワードを入力できます。
  • grep 2020: フィルタポート番号
  • awk '{print \$7}'awk:正しいフィールドを選択しましょう
  • sed s+/.*++g:削除/とその後の文字(注:簡潔にするために、この+記号はここの既存の記号を置き換えます/
  • sort -u:そのポートを使用する複数のプロセスがある場合に備えて(IPv4とIPv6の両方を使用している場合に発生します)
  • xargs kill:kill標準入力を引数として使用します。

sudo他のユーザーが終了したいプロセスを所有している場合は、最後のプロセスに以下を追加する必要があります。sudo xargs kill

たとえば、変数を使用することもできます(ここではコマンドを区切るためにセミコロンを使用し、パイプは必要ありません)。

[email protected] ; port=2020 ; ssh -t $server "sudo netstat -plnt | grep $port | awk '{print \$7}' | sed s+/.*++g | sort -u | xargs kill"

おすすめ記事