【问题标题】:How can a Ruby class detect the process name that runs it?Ruby 类如何检测运行它的进程名称?
【发布时间】:2011-09-02 18:06:48
【问题描述】:

我正在使用delayed_jobs 运行Ruby 类,Ruby 如何检测正在运行它的进程的名称(命令)?

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby delayed-job irb


    【解决方案1】:

    您可以使用$0 确定文件的名称。你甚至可以像$0 = 'foo'Dave Thomas's blog post一样使用它来设置进程名称。如果你想获取命令行参数,你想看看ARGV

    【讨论】:

    • 顺便说一下,$0 变量的别名是$PROGRAM_NAME
    • 不错。这样名字就不会那么容易混淆了。
    【解决方案2】:

    $0 包含正在执行的脚本的名称。 (可能是可分配的,所以它可能会出错)

    【讨论】:

    • ruby-prof 的 --replace-progname 开关为此目的操纵 $0,因此正在运行的脚本中的 $0 == __FILE__ 魔法咒语仍然有效。
    【解决方案3】:

    如果您使用的是 Unix 系统,您可以从 ruby​​ 执行脚本来确定如下过程:

    `ps aux | grep ruby` 
    

    然后使用 $?获取进程

    【讨论】:

    • 这将显示系统上的每个 ruby​​ 进程,而不仅仅是相关脚本。
    猜你喜欢
    • 2011-10-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多