如何通过Ruby设置命令行值以通过PS查看状态?

7
我希望能够通过命令行为我的pinger程序提供反馈并使用ps ax查看。我在SO q中找到了一些信息,但是...
....
ARGV[0] = "Hello!" # does nothing

我通过ruby ./pinger启动脚本


我怀疑你不能在不修改 Ruby 本身的情况下做到这一点。 - Dave Newton
@Dave:你可以将值赋给$0,这是Ruby中等同于C语言的argv[0]的变量。而Ruby的ARGV则只是保存了传入的参数。 - mu is too short
@Dave:这个$0的东西可能是从Perl继承来的(http://perldoc.perl.org/perlvar.html#%24PROGRAM_NAME)。 - mu is too short
1个回答

9

建议改为将值分配给$0。例如,如果我启动irb并且

$ ps | egrep 'irb|pancakes'
 3119 ttys000    0:01.02 irb 
 3131 ttys001    0:00.00 egrep irb|pancakes

然后在 irb 中执行以下操作:

>> $0 = 'pancakes'

回到另一个终端:

$ ps | egrep 'irb|pancakes'
 3119 ttys000    0:01.07 pancakes 
 3135 ttys001    0:00.00 egrep irb|pancakes

您也可以使用这个小脚本进行检查:
#!/usr/bin/env ruby
$0 = 'pancakes'
sleep 10

运行该命令,跳转到另一个终端,执行 ps | grep pancakes 命令,您应该能够看到一个名为“pancakes”的进程。


1
@rm-rf:我厌倦了foo,所以我转而使用pancakes。此外,我喜欢煎饼 :) - mu is too short

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接