• ベストアンサー

bash:あるプロセスをkillするスクリプト

こんにちは。 RedHat9を使っています。 bashシェルで、コマンドの実行結果を変数にわたすには、どうしたらいいですか? mpg123でmp3を聞いています。 ターミナルからCtrl+Cを2回入力するのではなしに、スクリプトを走らせるだけで実行をとめたいです。 ps -A | grep 'mpg123' の実行結果を変数に入れて、killコマンドの引数にその変数をわたせばいいんじゃないかと思ったんですが。 すみません、よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.3

``で括って代入するだけです。 proc=`ps -A | grep 'mpg123'` #2の方法だとmpg123が起動していなかったり複数起動していると問題が起こります。 proc=`ps -A | grep 'mpg123'` for name in $proc do kill $name done; の方が安全ですね。 for name in `ps -A | grep 'mpg123'` もちろんオッケーです。

その他の回答 (5)

  • 1Yen
  • ベストアンサー率28% (11/39)
回答No.6

あ、killするとしたら ps -ax | awk '/[m]pg123/{CMD=sprintf("kill -KILL %s",$1);system(CMD);}' です。 間違えて、プロセスを大量に起動してしまったときなどに使うことがありますσ(^^;

  • 1Yen
  • ベストアンサー率28% (11/39)
回答No.5

わたしなら proc=`ps -A | awk '/[m]pg123/{print $1}'` かな。

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.4

最後にawkをかまして,念のため, grep -v grep をかまして, proc=`ps -A | grep mpg123 | grep -v grep | awk '{print $1}'` とかやんないとダメだと思うんだけど …

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

殺すだけなら#1の方法で。 コマンド実行結果を他のコマンドの引数にする方法は kill -9 `ps -A | grep 'mpg123'` ``で括ります。

Sawara13
質問者

お礼

ありがとうございます。 やりたかったことも実現できましたし、コマンドの実行結果を他のコマンドに渡す方法も勉強になりました。

Sawara13
質問者

補足

で、教えて頂いたついでといってはなんですが。 (もう、これの用はすんだのですが、好奇心で) psの実行結果を、変数に入れることってできるんでしょうか? とくに変数の扱いに弱いので、ちょっと勉強したいです。

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.1

 killall mpg123 が,簡単だと思います.詳しくは man killall してください.

Sawara13
質問者

お礼

ありがとうございます。 Simple is best. killallの存在も知りませんでした。感謝。