首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示错误进程id的Ash Ash文件

显示错误进程id的Ash Ash文件
EN

Stack Overflow用户
提问于 2012-10-03 18:52:47
回答 1查看 413关注 0票数 0

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

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

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

我的包装器看起来像这样:

代码语言:javascript
复制
#!/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`
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-03 19:18:19

我想你必须这样做:

代码语言:javascript
复制
#!/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 (如sh)中,$$包含shell的当前进程ID,而$!包含最近派生的异步子进程的进程ID。在本例中,$!包含ruby的PID。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12706968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档