В Ruby, как лучше всего выполнить локальную команду Linux, хранящуюся в строке? - PullRequest
1 голос
/ 14 сентября 2009

В Ruby, какой самый простой способ выполнить локальную команду Linux, хранящуюся в строке, при перехвате любых возможных исключений и регистрации выходных данных команды Linux и любых выданных ошибок в общем файле журнала?

Ответы [ 4 ]

4 голосов
/ 14 сентября 2009

Я уже сталкивался с таким же вопросом раньше, и " Управление процессами " ответило на все мои потребности.

Если вы не хотите отделять ошибку от обычного вывода, просто используйте popen:

output = IO.popen("other_program", "w+") do |pipe|
  pipe.puts "here, have some input"
  pipe.close_write
  pipe.read
end

но если вы хотите, используйте popen3:

Open3.popen3('nroff -man') { |stdin, stdout, stderr| ... }
1 голос
/ 28 ноября 2011

Если вы хотите выполнить ls -a:

%x[ls -a]
1 голос
/ 14 сентября 2009

посмотрите на IO.popen

0 голосов
/ 14 сентября 2009

Вот код, который я использую, чтобы увидеть, активен ли процесс:

systemOutput=`ps -A | grep #{process_to_look_for}`
if systemOutput.include? process_to_look_for
  puts "#{process_to_look_for} is already running"
  exit
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...