2

出于安全原因,我想在解析命令行参数后删除它们:

login.rb --user me --password wombats

我试过 ARGV.clear 和 $*.clear

对 ARGV 或 $* 的更改都不会反映在 ps 中

4

1 回答 1

2

ps(1)您可以通过更改$PROGRAM_NAME变量来更改Ruby 进程的名称(如 所示)。这是一个故意循环的示例程序,例如:

#!/usr/bin/env ruby

puts $PROGRAM_NAME
$PROGRAM_NAME = "a ruby process"

loop { }

当它像这样运行时:

$ ./loop.rb password
./loop.rb

它在以下位置显示“红宝石进程” ps

$ ps aux | grep ruby
stuart         85292  98.9  0.1  2439468   4340 s004  R+    8:43PM   0:02.96 a ruby process  
stuart         85341   0.0  0.0  2432768    600 s011  S+    8:43PM   0:00.00 grep --color ruby

因此,您可以使用该$PROGRAM_NAME变量来准确更改流程的显示方式ps

于 2013-04-04T03:45:43.747 回答