2017-11-22 9 views
0

ここで私はエッセイを持っており、指定された名前ですべてのプロセスを終了するコマンドを作成する必要があります。次に入力するとプロセスのPIDが表示されますその名前と、それを殺し、私は今、このためtr -scut
を使用する必要がありますが、私は与えられた名前のproccesを殺してPIDを表示する

echo " What do you want to kill? " 
read pr 
ps -fA| grep -c $pr | grep -v grep | kill -9 $(ps aux | grep -e $pr | awk '{print $2}') 
+0

だけ優しいリマインダーあなたが新しいユーザーであるため。私の答えの横に小さな目盛りがあります。あなたが私の答えが役に立つと分かった場合にのみ、それをクリックすれば緑色になり、私を幸せにします。投票もオプションです。あなたが理解できないことがまだ残っている場合、私は喜んで助けます。 –

答えて

1
for i in $(ps -ef |grep $pr |grep -v grep |tr -s ' ' |cut -f2 -d' ') 
    do 
     kill $i && echo killed $i 
    done 

やったことあるtr -s ' 'cutがフィールドとして使用することができます1つの空間に繰り返しスペースを圧迫しますセパレータ。

そのより良く、より簡単にここでpgrep

すなわち

kill $(pgrep $pr) && echo done || echo not done 

を使用するためには、manページです:man pgrep

+0

しかし、killされたプロセスのPIDは表示されません!それをどうすればいいの? –

+0

@ zaki-madridista編集の回答をpidsに表示しました。私はあなたの質問でそれを見逃したので、それを逃した。質問を編集して明確にすることを検討してください。文頭に大文字、句読点の終了時および司法上の使用期間が含まれる。短くクリアな文章がこの種のものに最適です。 –

+0

なぜ 'ps'を使うのですか?すでに名前がある場合は 'pidof name'を使ってください。また、 'pidof'が1つ以上のPIDを返すかどうかをチェックする必要があります(' ps name | grep ... 'のみ可能です)。だからなぜ 'printf"%s \ n "$(pidof bash)|読んでいる間、-r pid; do ... ... –

関連する問題