2017-09-22 17 views
0

私はPIDファイルとプロセスを殺すためにこのコードを使用中のプロセスを強制終了しルビー

system "kill `cat /tmp/file.pid`" 

または

`kill \`cat /tmp/pidfile\`` 

出力は次のようになります。

sh: 1: kill: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or 
kill -l [exitstatus] 

バックスティックに問題はありますか?これは完璧に動作します:

kill `cat /tmp/file.pid` 
+0

最初の例がすでに動作している場合、なぜ 'system'ベースの方法を使いたいのですか? –

+0

何が起こっているのかを理解して理解するだけです。 –

+0

正しいパスはどれですか? '/ tmp/pidfile'または'/tmp/file.pid'ですか?基本的には、 'system'を使って構文上何も間違っているわけではないので、最初の方が良いでしょう。 –

答えて

0

文字列が補間されていないためです。これはcatコマンドを実行しません:

system "kill `cat /tmp/file.pid`" 

は代わりに、あなたがこれを書くことができます:あなたは、元の上でこれを行うことを選択したい理由

system "kill #{`cat /tmp/file.pid`}" 

しかし、私は(不明瞭ですメソッド)。

+0

私はrubyとi ilikeを学んでいます。新しいもの(pid、trhead、fileを使って作業...)は、上記のコマンドはもちろんsh:1:kill:そのようなプロセスはありません。 –

+0

@flowdaguerre実際にこのようなプロセスが実行されていないためです –

+0

* "上記のコマンドはsh:1:kill:そのようなプロセスはありません" * ---おそらく、このIDで実行中のプロセスがないためです。これはルビコードのバグではありません。現在のIDで更新されていないファイルなど、別の問題でなければなりません。 –