3

名前の付いたランダムプロセス(ランダムperlプロセスなど)を強制終了する方法が必要です。

これを行うための最良の方法は何でしょうか?

私はこのようなものを使うことを考えていました:

ps aux | grep PROCESS-NAME

ファイルに移動し、ランダムな行番号を見つけて、2番目の列(プロセスID?)を取得し、それを強制終了します。

私の使用では、プロセスの1つを強制終了する限り、実際にはランダムなものである必要はありません。それをランダムにすることはそれをより良くするだけです。

4

9 に答える 9

7

killallコマンドの-rオプションを見てください !

于 2009-12-13T07:27:18.813 に答える
4

バッシュワンライナー:-p

kill `ps auxww | grep zsh | awk '{print $2}' | while read line; do echo "$RANDOM $line"; done | sort | cut -d ' ' -f 2 | head -n 1`
于 2009-12-13T07:31:46.077 に答える
2

'pidof'コマンドもあります。これは次のコマンドで強制終了するために使用できます。

kill `pidof processname`

同じ名前のプロセスが複数ある場合に1つのプロセスだけを取得するには、「シングルショット」に-sを使用します。

于 2009-12-13T07:46:56.690 に答える
0

あなたはすでに正しい軌道に乗っているように聞こえました。

次のperlスクリプトを使用して、randomline.plとして保存できます。これにより、パイプされたものからランダムな行が返されます。

#!/usr/bin/perl
srand (time ^ $$ ^ unpack "%L*", `ps axww | gzip`);
while (<>) { push(@_,$_); } print @_[rand()*@_];

次に、次のコマンドを実行して、killコマンドを送信します

kill `ps aux | grep PROCESS-NAME | perl randomline.pl | awk '{print $2}'`

また、プロセス名に一致するルートレベルのプロセスを強制終了しようとしないように、rootのgrepを逆にして、いくつかのチェックを追加することもできます。

于 2009-12-13T07:30:00.310 に答える
0

ただ殺してawk。

kill $(ps -eo cmd,pid|awk '/zsh/&&!/awk/{pid[$NF]}END{for(i in pid){print i;exit}}')

ENDブロックのforループは、あなたにランダムなpidを与えて殺します

于 2009-12-13T08:06:50.843 に答える
0

最近のbashシェルで

#!/bin/bash
declare -a pid
pid=( $(pidof myprocess) )
length=${#pid}
rnumber=$((RANDOM%length+1))
rand=$((rnumber-1))
kill ${pid[$rand]}
于 2009-12-13T08:25:52.483 に答える
0

pgrepとpkillを使ってみませんか。それらは、プロセスを選択するための多くのオプションを可能にします。

于 2009-12-14T01:22:14.170 に答える
0

「my_proc_name」という名前のプロセスを強制終了します:

kill -9 `ps xf | grep my_proc_name | grep -v grep | cut -d " " -f 1`
于 2012-03-02T09:50:42.620 に答える
0

トピックから外れているかもしれませんが、私はこれをCygwinで使用しています。LevVictorovichPriymaの答えに触発されました

ps -W | awk '/calc.exe/,NF=1' | xargs kill -f

また

ps -W | awk '$0~z,NF=1' z=calc.exe | xargs kill -f
于 2012-05-17T23:20:14.410 に答える