Shell脚本启动subprocess

免责声明:我完全不熟悉shell脚本,但在PHP和Obj-C等其他语言中有相当多的经验。

我在写我的第一个守护进程脚本。 以下是目标:

  • 我想让它在后台运行
  • 我希望它被包含启动/停止/重新启动命令的init.d脚本触发
  • 我希望循环中的每个进程都能触发它自己的subprocess。
  • 当init.d脚本启动的父进程被终止时,我也希望subprocess死掉。

从本质上讲,我正在寻找类似于apache,spamd,dovecot等软件似乎很常见的行为。但是,根据我的研究,我还没有find一个简单的答案有些事情是实现的。

任何帮助是极大的赞赏。

通过阅读过程pipe理,你会发现很多非常好的信息。

另外,看看你现有的init.d脚本,并将它们用作你自己编写的模型。 请记住,其中一些可以改善。 所以尽量不要捡到任何坏习惯。

你可能想把你的脚本写在Bourne shell( sh )而不是Bash中,但是通过阅读Bash常见问题和Bash陷阱 ,你可以学到很多东西。

这是步骤。

  • 让我们说你的脚本/ opt / path / test。 确保其可执行

  • 确保脚本顶部的下面一组行在“#!/ bin / bash”之后

    对于RedHat和堂兄弟:

    chkconfig: – 要启动的序列号和级别“例如: – 91 35”

    描述:你的DAEMON过程的描述

    进程名称:DAEMON NAME

  • 看看/etc/init.dpath中的示例脚本,并尝试模仿你的启动/停止/重新启动过程… [大步骤…不进入细节]

  • 以“&”结尾,在脚本的后台运行脚本

    例如: – “/ opt / path / test&”

  • 将脚本复制到/etc/init.d位置

  • 不要做chkconfig

    chkconfig –addtesting

    chkconfigtesting

  • 考证

    chkconfig –list | greptesting

  • 做/etc/init.d/test stop / start / restart ..确保你的进程正在运行。