リモートでプロセスを強制終了する方法


0

このコマンドを使ってリモートでプロセスを強制終了しますが、うまくいきません。

ssh -t root@g-9 -x "sshpass -p 'ubuntu' ssh -t root@10.147.243.178 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -x 'kill -9 `ps aux | grep cassandra | awk '{print $2}'`'"
Warning: Permanently added '10.147.243.178' (ECDSA) to the list of known hosts.
bash: line 0: kill: (12720) - No such process
Connection to 10.147.243.178 closed.

どこでエラーになる可能性がありますか?

回答:


0

コマンド文字列を次のように置き換えます。

kill -9 `ps aux | grep cassandra | grep -v "grep " | awk '{print $2}'`

これにより、解析しようとしている結果にgrepが表示されなくなります。

実際に起こっていることは、あなたの解析があなたのgrepプロセスを拾い上げてそれを殺そうとしているということですが、それはすでに完了しています。 に存在しない文字列をgrepしたとき ps の出力では、応答が返されますが、それはのPIDになります grep プロセス、これはあなたにとって無駄です。

IE( "thisIsNotAProcess"というプロセスはありません)

Minty17 ~ $ ps -aux | grep "thisIsNotAProcess"
username    9364  0.0  0.0  11740   936 pts/2    S+   04:38   0:00 grep --colour=auto thisIsNotAProcess

そしてあなたがそれをあなたのコマンド文字列に接続するなら:

Minty17 ~ $ kill -9 `ps aux | grep thisIsNotAProcess | awk '{print $2}'`
bash: kill: (9374) - No such process

この落とし穴を避けるためのその他のテクニックについては、こちらをチェックしてください。 プロセスリストからgrepを除外する


ssh -t root @ g-9 -x "sshpass -p 'ubuntu' ssh -t root@10.147.243.178 -o StrictHostKeyChecking =いいえ-oユーザー既知ホストファイル= / dev / null -x 'kill -9 ps aux | grep cassandra | grep -v "grep" | awk '{print $2}' ''警告:既知のホストのリストに '10 .147.243.178'(ECDSA)を永久的に追加しました。 10.147.243.178への接続がクローズされました。引用符 ""問題があると思います。
researcher

つまり、プロセスラインがないということです。 ps -aux これは文字列と一致します cassandra。 grepとawkは値を返さないので、文字通り実行しています。 kill -9 PIDなしで、Killはその使用法を表示します。あなたはこれを自分で再現することができます kill -9 。 grepが行を見つけられないときはいつでもあなたのスクリプトでこれが起こるでしょう。あなたは 'cassandra'のスペルを間違えました。 grepは大文字と小文字を区別するので、 "Cassandra"!= "cassandra"を忘れないでください。私はすでにこれを期待していました、あなたの前の問題はgrepプロセスを検出することにありました、そして、grepは常に目標ストリングで最も高いPIDを持つでしょう。
Frank Thomas

このコマンドを使うとkill -9 ps aux | grep cassandra | grep -v "grep " | awk '{print $2}' 直接ホストに、私はエラーがないし、それはcassandraプロセスを殺します。私はリモートで心配するとき私は唯一の問題を抱えている!ベスト
researcher

その場合は、 ps -aux あなたのためのプロセスをリストしていません。プロセスが別の「端末」上にある可能性があるため、試してみてください。 ps -ef 代わりに。
Frank Thomas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.