Похоже, это будет сделано:
File.open("proc.#{ Time.now.strftime('%F') }", 'w') do |fo|
fo.puts `ps -eo pid,cmd`.lines.map{ |li| li[ /^([^\[]+)/, 1] }
end
li[ /^([^\[]+)/, 1]
означает «захватить все с начала строки, которая не является« [
», и вернуть ее.
Создан файл с именем "proc.2011-04-16", который выглядит следующим образом:
PID CMD
1 /sbin/init
2
3
4
5
[...]
255 upstart-udev-bridge --daemon
296 rsyslogd -c4
303 dbus-daemon --system --fork
315 udevd --daemon
398 avahi-daemon: running
443 avahi-daemon: chroot helper
493
[...]
РЕДАКТИРОВАТЬ: Было несколько вещей, которые я думал, может быть более кратким:
File.open('proc.' + Date.today.strftime, 'w') do |fo|
fo.puts `ps -eo pid,cmd`.gsub( /\s+\[.+?\]$/, '')
end