在顶部更改ruby进程名称

mue*_*san 22 ruby unix linux top-command

我想更改linux/unix top命令中显示的ruby进程的名称.我试过了

$0='miname'
Run Code Online (Sandbox Code Playgroud)

方法,但它只适用于ps命令,并在顶部,该过程不断显示为"红宝石"

Gor*_*son 17

Dave Thomas 在rails中做了一篇有趣的帖子.关于实际进程名称更改代码没有特定的rails.他使用这种$0='name'方法.当我跟着他的脚步名称改为中pstop.

在帖子中,c如果您的top版本默认情况下没有显示该命令的短版本,他建议使用键盘命令.

  • web.archive.org拯救生命:https://web.archive.org/web/20130415202502/http://pragdave.blogs.pragprog.com/pragdave/2008/11/trivial-request-logging-for-rails. HTML (2认同)

dub*_*bek 10

Ruby 2.1 为此目的引入了一种Process.setproctitle方法:

Process.setproctitle("My new title")
Run Code Online (Sandbox Code Playgroud)


Kel*_*tia 9

我认为Ruby没有内置设施(setproctitle(3)).您可能应该尝试查看ruby-ffi并创建接口setproctitle(3).

编辑:我知道你有答案,但我想向你展示一些使用ffi的代码:

require "ffi"
#
module LibC
  extend FFI::Library

  attach_function :setproctitle, [:string, :varargs], :void
end

LibC.setproctitle("Ruby: executing %s", :string, $0)
Run Code Online (Sandbox Code Playgroud)

因为setproctitle(3)不存在而无法在OS X上运行,适用于FreeBSD.