2012-03-01 9 views
36

私は、レイクタスクに刈り取りラインを入れて、何らかの形で追加されたルビータスクを殺すために、何らかの形で機会をとってしまいます。現在のレーキタスクのPIDを取得するには?

system "ps aux | grep 'namespace:taskname' | grep ruby | grep -v grep | awk '{print $2}' | xargs kill -9; echo 'Reaped old namespace:taskname processes.'" 

私はちょうど私も実行している現在のタスクを殺さないことを確認することでgrep -v $PID_OF_CURRENT_TASKを追加したいと思います。

どうすればそのPIDを取得できますか?

+0

とRubyで現在のPIDを取得します'pgrep'を使用します。これらのコマンドは、より安全であり、読者にとってはるかに理解しやすいものです。 – hagello

答えて

79

あなたは `pkill`または` killall`のよく起草コールでパイプライン全体を交換することができ、あるいは、少なくともこのパイプラインの最初の部分を置き換えることがProcess.pid

+10

'$$'(これは '/ bin/sh'から得たPerlからのものです)もあります。 –

+1

私はそれを忘れてしまった。それはより秘密ですが、より簡単です。あなたが ''英語 "'が必要な場合、 '$ PID'などもあります。 – Linuxios

+1

「pid」、「ppid」、「uid」、「euid」、「gid」、「egid」の違いは何ですか? –

関連する問題