Shell脚本创建PHP守护进程自动重启
5星 · 超过95%的资源 需积分: 10 91 浏览量
更新于2024-11-29
收藏 1KB TXT 举报
本资源提供了一种使用Shell脚本来创建守护进程的方法,目的是监控并确保一个后台运行的PHP程序在非正常退出时能够自动重启。它包含三个主要的Shell脚本:`start.sh`、`sh.sh`和`stop.sh`。
在Linux系统中,守护进程(Daemon)是一种在后台运行且不与终端关联的进程,通常用于提供持续的服务。这个示例展示了如何用Shell编写守护进程来管理PHP程序。以下是对每个脚本的详细解释:
1. `start.sh`:
这个脚本是启动整个守护进程流程的入口。它首先执行`sh.sh`并将进程ID(PID)保存到文件`sh.sid`中。这样,`start.sh`就可以知道哪个进程是父进程,以便在需要时停止整个守护进程。
```bash
#!/usr/local/bin/bash
/home/phpshell/sh.sh &
shpid="$!";
echo "$shpid">/home/phpshell/sh.sid
```
2. `sh.sh`:
这个脚本是实际的守护进程主体,它负责启动PHP程序并监控其状态。当PHP程序结束时,它会记录错误日志并重新启动PHP程序。
- 首先,定义了PHP可执行文件的路径和要运行的PHP程序路径。
- 使用`$PHP $PROGRAM &`启动PHP程序,并将子进程ID(chpid)保存到`php.sid`文件中。
- 使用一个无限循环来检查子进程的状态,通过`wait $chpid`获取子进程的退出状态。如果子进程已退出,会记录相关信息并再次启动PHP程序。
```bash
#!/usr/local/bin/bash
PHP="/usr/local/bin/php"
PROGRAM="/www/time.php"
# ...启动PHP程序并保存子进程ID...
while [ 1 ]; do
wait $chpid
exitstatus="$?"
# ...记录错误日志并重新启动PHP程序...
done
```
3. `stop.sh`:
这个脚本用于停止由`start.sh`启动的守护进程。它首先读取`sh.sid`文件中的父进程ID并发送一个信号以终止该进程,然后查找并杀死所有运行的PHP进程。
```bash
#!/usr/local/bin/bash
chpid="`cat sh.sid`"; kill $chpid; echo "kill sh.sh done!"
# ...查找并杀死所有PHP进程...
```
通过这个示例,我们可以学习如何用Shell脚本实现简单的进程监控和自动重启功能,这对于维护持续运行的服务器服务非常有用。需要注意的是,实际生产环境中可能需要更复杂的错误处理和日志记录机制,以及更安全的权限管理。此外,这个示例适用于基础的守护进程需求,对于更复杂的应用场景,可能需要使用专门的进程管理工具,如Systemd或Supervisor。
2017-11-13 上传
2022-03-20 上传
2020-09-15 上传
2023-08-18 上传
2023-03-29 上传
2018-10-10 上传
2019-11-05 上传
2023-08-11 上传
2023-08-24 上传
chenyulin
- 粉丝: 0
- 资源: 1
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍