web-dev-qa-db-ja.com

リモート* nixマシンでプロセスを強制終了する方法

多くの* nixマシンでkillコマンドを発行したいと思います。私はこのようなことをしようとしています:

rsh <remotemachine> ps -ef | grep <somepattern> | awk '{print $2}' | xargs n1 -t -i kill {}

ただし、リモートマシンではなく、ローカルマシンでkillコマンドが発行されます。私もこのようなことを試しました:

rsh <remotemachine> kill $(ps -ef | grep <somepattern> | awk '{print $2}')

しかし、それは私にとってもうまくいきません。

1
JamesG

それを備えたマシンで作業していると仮定すると、pgrepやpkillなどのより具体的なユーティリティを使用することもできます。これは、grep、awk、またはxargsを使用する必要がないことを意味します。これは物事をかなり単純化するでしょう。

http://linux.about.com/library/cmd/blcmdl1_pkill.htm

rsh "remotemachine" pkillは、プロセス名が何であれ

6
Jeff McJunkin

ssh user @ someserver "ps -ef | grep | awk '{print $ 2}' | xargs n1 -t -i kill {}"

SSH以外のリモートコンソールの方法を使用することを拒否します。それは事実上どこにでもあります。

3
RandomInsano

ランダムに脇に置いて、SSHを使用することをお勧めします。 RSHはパスワードを平文で送信し、SSHははるかに安全です。

いずれにせよ、ローカルシェルが解釈しようとしている文字をエスケープする必要があります。つまり、それらのパイプ。そして一重引用符。そしてドル記号。中括弧は大丈夫だと思いますが、私はおそらく妄想的で、これら2つを実行します。これを行わないと、RSHコマンドは最初のパイプにのみ渡され、そのコマンドの出力はローカルでgrep、awkなどにパイプされます。

これはイライラするようなコマンドです。これを試して:

rsh <remotemachine> ps -ef \| grep <somepattern> \| awk \'\{print \$2\}\' \| xargs n1 -t -i kill \{\}


-クリストファー・カレル

1

これは、taskkill、pskill、または別のコマンドを使用するWindowsマシンで可能です:)残念ながら、ssh、rsh、または別のリモートセッションツールを使用しないLinux/UNIXマシンでは不可能です。

0
Pi4a