免责声明:我对 shell 脚本完全陌生,但在其他语言(如 PHP 和 Obj-C)方面有相当多的经验。
我正在写我的第一个守护进程脚本。以下是目标:
- 我想让它在后台运行
- 我希望它由包含启动/停止/重启命令的 init.d 脚本触发
- 我希望循环中的每个进程都触发自己的子进程。
- 当 init.d 脚本启动的父进程被终止时,我希望子进程也终止。
本质上,我正在寻找在 apache、spamd、dovecot 等软件中似乎非常普遍的同类行为。但是,根据我的研究,我还没有找到一个简单的答案来说明这是怎么回事这样的事情就实现了。
任何帮助是极大的赞赏。
通过阅读Process Management,您会发现很多非常有用的信息。
此外,查看您现有的
init.d
脚本并在编写自己的脚本时将它们用作模型。请记住,尽管其中一些可以改进。所以尽量不要养成任何坏习惯。您可能希望在 Bourne shell ( ) 而不是 Bash 中编写脚本,但是您可以通过阅读Bash FAQs和Bash Pitfalls
sh
学到很多适用于两者的内容。这是步骤。
让我们说你的脚本/opt/path/test。确保其可执行
确保脚本顶部有以下几行,就在“#!/bin/bash”之后
对于 RedHat 和表兄弟:
chkconfig: - Sequence# & Level 你想开始 "Eg:- 91 35"
描述:你的守护进程的描述
进程名称:守护进程名称
查看 /etc/init.d 路径中的示例脚本并尝试模仿您的启动/停止/重启过程...... [大步骤..不深入细节]
以“&”结尾在脚本后台运行你的脚本
例如:- “/opt/path/test &”
将脚本复制到 /etc/init.d 位置
不做 chkconfig
chkconfig -- 添加测试
chkconfig 测试
验证
检查配置--列表 | grep 测试
执行 /etc/init.d/test stop/start/restart.. 确保您的进程正在运行。