草庐IT

proc_pid_cmdline

全部标签

ruby - 如何指定守护进程的日志和 pid 目录?

使用守护进程,我如何指定我的脚本的日志进入/log/而它的pid进入/tmp/pids/?我已经阅读了文档,我看到了:dir/:dir_mode,但我只能让它做一个或另一个,而不是两个—如果你问我,这似乎是一组非常糟糕的选项。 最佳答案 看起来vanillaDaemons不能做你想做的事,但它是可以修复的。尝试这样的事情:require'rubygems'require'daemons'moduleDaemonsclassApplicationdeflogfile;'/log/f1';enddefoutput_logfile;'/l

Ruby Symbol#to_proc 在 1.9.2-p180 中泄漏引用?

好的,这是我第二次尝试调试Sinatra应用程序的内存问题。我相信这次我已经将它确定为简单的示例代码。似乎当我通过.map(&:some_method)过滤数组时,它会导致该数组中的项目无法被垃圾回收。运行等效的.map{|x|x.some_method}完全没问题。演示:给定一个简单的示例类:classCdeffoo"foo"endend如果我在IRB中运行以下命令,它会被正常收集:ruby-1.9.2-p180:001>a=10.times.map{C.new}=>[...]ruby-1.9.2-p180:002>b=a.map{|x|x.foo}=>["foo","foo","f

ruby - 在 Ruby 中通过 pid 获取进程状态

有没有办法在Ruby中根据进程的PID获取进程的子进程状态?例如,在Python中你可以做psutil.Process(pid).status 最佳答案 我不知道可移植的ruby​​方法来获取正在运行的进程的进程状态。您可以执行Process.wait并检查$?.exitstatus,但这看起来不像您想要的那样。对于posix解决方案,您可以使用`ps-ostate-p#{pid}`.chomp获取ps为进程状态生成的字母代码PROCESSSTATECODESHerearethedifferentvaluesthatthes,sta

ruby - 为什么 to_proc 在 Ruby 改进中不起作用?

to_proc似乎不适用于细化中定义的方法:moduleArrayExtensionsrefineArraydodefsumreduce(0,:+)endendendusingArrayExtensionsputs[[1,2,3]].map{|array|array.sum}#=>6puts[[1,2,3]].map(&:sum)#=>array.rb:13:in`map':undefinedmethod`sum'for[1,2,3]:Array(NoMethodError)puts[1,2,3].method(:sum).to_proc.call#=>array.rb:14:in`m

ruby - Ruby 1.9 中更自然的 Proc 调用方式

我们知道,在Ruby1.9中有几种Proc调用方式f=->n{[:hello,n]}pf[:ruby]#=>[:hello,:ruby]pf.call(:ruby)#=>[:hello,:ruby]pf.(:ruby)#=>[:hello,:ruby]pf===:ruby#=>[:hello,:ruby]我很好奇,调用Proc的更“自然”方式是什么?“自然”可能意味着更像计算机科学。 最佳答案 第二个选项是迄今为止最常用的。pf.call(:ruby)#=>[:hello,:ruby]它使它更类似于标准方法。此外,一些库在验证参数检

ruby - Symbol#to_proc 自定义方法

我喜欢在Ruby中如何将方法作为block传递,就像这样使用Symbol#to_proc:[1.0,2.0,3.0].map(&:to_i)#=>[1,2,3]我还可以定义自己的lambda,times_two,并将其作为block传递:times_two=->(x){x*2}[1,2,3].map(×_two)#=>[2,4,6]虽然我似乎不能将times_two作为符号传递:[1,2,3].map(&:times_two)#=>ArgumentError:wrongnumberofarguments(0for1)然而,当我尝试用一​​种方法做同样的事情时,我得到了一个错误

ruby - 一元运算符和在 Ruby 中将 proc 作为参数传递

我无法理解下面这段代码。我想到了一元与号运算符并将proc作为参数传递给方法。但我真的无法将self传递给language.call。我是这样理解的:我们将self作为参数传递给proc/block语言。这对我来说没有任何意义。有人可以解释一下吗?:)classTranslatordefspeak&languagelanguage.call(self)endprotecteddeffrench'bonjour'enddefspanish'hola'enddefturkey'gobble'enddefmethod_missing(*args)'awkwardsilence'endend我

ruby - foo(&nil) 与 foo(&"not a proc") 的行为有何不同?

我从质问中发现[1,2,3].each(&nil)不会导致任何错误-它只是返回一个枚举器。相比之下,[1,2,3].each(&"")加注TypeError:wrongargumenttypeString(expectedProc)此外,&nil会导致block_given?返回假defblock_given_testerifblock_given?puts"Blockgiven"elseputs"Blocknotgiven"endendblock_given_tester(&nil)#=>Blocknotgiven这不是因为NilClass实现了to_proc-我检查了RDoc。我能

ruby-on-rails - 为什么 ruby​​ 中的 break 语句在使用 Proc.new 和符号时表现不同?

block的break语句(根据TheRubyProgrammingLanguage)定义如下:itcausestheblocktoreturntoitsiteratorandtheiteratortoreturntothemethodthatinvokedit.因此,当运行以下代码时,会导致LocalJumpError。deftestputs"enteringtestmethod"proc=Proc.new{puts"enteringproc";break}proc.call#LocalJumpError:iteratorhasalreadyreturnedputs"exitingt

ruby - 等待 Ruby 子 pid 退出

我正在尝试fork一个子进程,等待它完成,如果它没有在一定时间内完成,则将其杀死。这是我目前所拥有的:servers.eachdo|server|pid=forkdoputs"Forking#{server}."output="doingstuffhere"putsoutputendProcess.waitputs"#{server}childexited,pid=#{pid}"end在Process.wait之后/附近的某处,我希望某种实用程序等待20秒,如果进程仍然存在,我想终止它并将输出标记为“错误”。我是fork/exec的新手。我的代码实际上可以fork,但我只是不知道如何处