2013-02-18 13 views
10

Tam komut satırını ruby'ye nasıl alabilirim? Tam komut satırını ruby'ye nasıl alabilirsiniz?

$ 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" 

Ben aynı sonuçları almak için yapabileceğiniz ninja ps daha temiz bir şey var mı?

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

ARGV geri boş geliyor:

gibi tam aynı çıktı istiyoruz durumda karışıklık olduğunu açıklığa kavuşturmak.
$ 0 dosyasının tam yolu eksik.

+1

Sen örnekte Rayları Ruby tam komutla ilgili sormak, ama sonra söylüyorlar. Hangisi? Her ikisinde de "komut satırı" var ama çok farklı uygulama katmanları var. Ve, "tam komut satırı" ile ne demek istiyorsun? Bir sh/bash/zsh komut istemi? –

+0

@theTinMan Sağladığım numuneyi okudunuz mu? Mevcut ruby ​​sürecim için ps -eo "% a" istiyorum. –

+0

Rails komut satırı olan "raylar c" deyin. 'ps' bir şey sadece çalışan bir süreç değil, bir komut satırı döndürecek. Bir komut satırı da "geri döndürmez". 'raylar c' IRB'ye dayanmaktadır ve ikisi de tam bir" komut satırı "değildir. Ruby'nin içindeki etkileşimli kabuklar ya da Rails'in eklentileri yüklü Ruby'dir. –

cevap

6

Kullanayım:

#!/usr/bin/env ruby 

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

Running bir komut dosyası çıkışları iç:

 
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 
+0

Takip ediyorum, sanırım bu hiç bir zaman Sürecin içine işlenmemişti, pid/çatal gipleri ve yumurtlama, çekirdek yakutta kendilerini buldular –

İlgili konular