Ruby 显示错误进程id的文件

Ruby 显示错误进程id的文件,ruby,bash,monit,openwrt,ash,Ruby,Bash,Monit,Openwrt,Ash,我有一个非常简单的包装器脚本来启动监视网络连接的ruby程序。脚本在路由器上-因此我们使用的是ash,而不是bash 因为我们使用monit来监视状态,所以我需要一个PID文件。问题是,包装器设置的进程id比ruby程序少一个 因此,Monit跨越数百个进程。如何让包装器启动ruby程序并创建正确的PID文件 我的包装看起来像这样: #!/bin/sh /etc/rc.common start(){ echo $$ > /var/run/ping.pid ruby /e

我有一个非常简单的包装器脚本来启动监视网络连接的ruby程序。脚本在路由器上-因此我们使用的是ash,而不是bash

因为我们使用monit来监视状态,所以我需要一个PID文件。问题是,包装器设置的进程id比ruby程序少一个

因此,Monit跨越数百个进程。如何让包装器启动ruby程序并创建正确的PID文件

我的包装看起来像这样:

#!/bin/sh /etc/rc.common
  start(){
    echo $$ > /var/run/ping.pid
    ruby /etc/scripts/ping.rb & > /dev/null 2>&1
  }
  stop(){
    kill `cat /var/run/ping.pid`
}

我想你必须做到:

#!/bin/sh /etc/rc.common
  start(){
    ruby /etc/scripts/ping.rb & > /dev/null 2>&1
    echo $! > /var/run/ping.pid
  }
  stop(){
    kill `cat /var/run/ping.pid`
}

在POSIX shell(如
sh
)中,
$
包含shell的当前进程ID,而
$包含最近生成的异步子进程的进程ID。在本例中,
$包含ruby的PID。

如果我能拥抱你,我会的!谢谢