10

Rubyで完全なコマンドラインを取得するにはどうすればよいですか?

$ rails c
> $0 
=> "script/rails"
> ARGV
[]
> `ps -eo "%p|$|%a" | grep '^\\s*#{Process.pid}'`.strip.split("|$|")[1]
=> "/home/sam/.rvm/rubies/ruby-1.9.3-p194-perf/bin/ruby script/rails console"

同じ結果を得るためにできる忍者 ps よりもクリーンなものはありますか?

明確にするために、混乱がある場合に備えて、次とまったく同じ出力が必要です。

`ps -eo "%p|$|%a" | grep '^\\s*#{Process.pid}'`.strip.split("|$|")[1]

ARGV は空白に戻ります。
$0 にはフル パスがありません。

4

1 に答える 1

6

私は使用します:

#!/usr/bin/env ruby

puts "Process ID: #{ $$ }"
puts `ps axw`.split("\n").select{ |ps| ps[ /\A#{ $$ }/ ] }

スクリプト内でそれを実行すると、次のように出力されます。

18222 s000 S+ 0:00.25 /Users/foo/.rbenv/versions/1.9.3-p385/bin/ruby /Users/foo/.rbenv/versions/1.9.3-p385/bin/rdebug /Users/foo/Desktop /test.rb
于 2013-02-18T05:20:14.220 に答える