linux命令行启动一个php进程, 如何监控 ,崩溃报警通知?

在Linux环境中,监控PHP进程并在其崩溃时发送通知可以通过多种方式实现,包括使用shell脚本结合监控工具和通知服务。下面我将提供一个简单的方案,使用systemd服务来管理PHP进程,并通过邮件发送崩溃通知。

第1步:创建一个PHP脚本

假设您已经有一个PHP脚本,比如叫做script.php,位于/home/user/目录下。

第2步:创建一个systemd服务单元文件

  1. 创建服务文件
    打开一个文本编辑器来编写systemd服务单元文件,如nano

    sudo nano /etc/systemd/system/myphp.service
    
  2. 编辑服务文件
    在打开的编辑器中,输入以下内容:

    [Unit]
    Description=My PHP Service
    After=network.target[Service]
    Type=simple
    User=user
    ExecStart=/usr/bin/php /home/user/script.php
    Restart=on-failure
    RestartSec=5s[Install]
    WantedBy=multi-user.target
    

    这里ExecStart指定了PHP的执行命令和脚本路径。Restart=on-failureRestartSec=5s指示systemd在进程失败时尝试重启,每次尝试前等待5秒。

  3. 启用并启动服务
    使服务在启动时自动启动,并立即启动服务:

    sudo systemctl enable myphp.service
    sudo systemctl start myphp.service
    

第3步:设置邮件发送崩溃通知

我们可以使用systemd的邮件通知功能,但首先需要在系统上配置邮件服务(如sendmailpostfix)。

  1. 安装sendmail(仅作示例,您也可以使用其他邮件服务器):

    sudo apt install sendmail
    sudo sendmailconfig
    

    遵循安装提示完成配置。

  2. 修改服务文件以添加邮件通知

    再次编辑myphp.service文件:

    sudo nano /etc/systemd/system/myphp.service
    

    添加ExecStartPostExecStopPost命令发送邮件:

    [Service]
    Type=simple
    User=user
    ExecStart=/usr/bin/php /home/user/script.php
    Restart=on-failure
    RestartSec=5s
    ExecStartPost=/usr/bin/mail -s "PHP Service Started" your@email.com <<< "PHP Service has started."
    ExecStopPost=/usr/bin/mail -s "PHP Service Stopped" your@email.com <<< "PHP Service has stopped."
    
  3. 重新加载并重启服务

    sudo systemctl daemon-reload
    sudo systemctl restart myphp.service
    

这样设置后,每次PHP服务启动或停止时,都会向指定的电子邮件地址发送通知。

其他方案

除了使用systemd和邮件,还有许多其他方法可以实现监控和通知,例如使用第三方监控工具(如Nagios, Zabbix, Prometheus等)和专业的错误追踪服务(如Sentry, Rollbar等)。这些工具和服务提供了更高级的监控功能和通知选项,可以根据需要进行选择。

发送邮件通知改成php脚本 qq邮箱 发送邮件

如果你想通过PHP脚本使用QQ邮箱发送邮件作为通知手段,你可以使用PHP的邮件发送库PHPMailer。首先,需要正确设置QQ邮箱以使用SMTP服务,然后配置PHPMailer来发送邮件。

步骤 1: 设置QQ邮箱

  1. 登录你的QQ邮箱。
  2. 进入设置 -> 账户。
  3. 找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”部分,开启“SMTP服务”并记录下生成的授权码,这个授权码将用作SMTP密码。

步骤 2: 安装PHPMailer

使用Composer安装PHPMailer。如果你没有安装Composer,请先安装Composer。

composer require phpmailer/phpmailer

步骤 3: 创建PHP脚本来发送邮件

创建一个PHP脚本,例如sendmail.php,并使用以下代码来配置PHPMailer发送邮件:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;require 'vendor/autoload.php';$mail = new PHPMailer(true);try {// Server settings$mail->SMTPDebug = 0;                                 // Enable verbose debug output$mail->isSMTP();                                      // Set mailer to use SMTP$mail->Host       = 'smtp.qq.com';                    // Specify main and backup SMTP servers$mail->SMTPAuth   = true;                             // Enable SMTP authentication$mail->Username   = 'your@qq.com';                    // SMTP username$mail->Password   = 'your-smtp-password';             // SMTP password (use the authorization code)$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted$mail->Port       = 465;                              // TCP port to connect to// Recipients$mail->setFrom('your@qq.com', 'Mailer');$mail->addAddress('recipient@example.com', 'Joe User');     // Add a recipient// Content$mail->isHTML(true);                                  // Set email format to HTML$mail->Subject = 'PHP Service Notification';$mail->Body    = 'This is the HTML message body <b>in bold!</b>';$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';$mail->send();echo 'Message has been sent';
} catch (Exception $e) {echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

步骤 4: 修改systemd服务文件

修改你的systemd服务文件,使其在服务启动或停止时运行这个PHP脚本。

[Service]
Type=simple
User=user
ExecStart=/usr/bin/php /home/user/script.php
Restart=on-failure
RestartSec=5s
ExecStartPost=/usr/bin/php /path/to/sendmail.php
ExecStopPost=/usr/bin/php /path/to/sendmail.php

记得替换/path/to/sendmail.php为你的PHP脚本实际路径。

步骤 5: 重新加载并重启服务

sudo systemctl daemon-reload
sudo systemctl restart myphp.service

这样,每次服务启动或停止时,都会通过QQ邮箱发送邮件通知。确保SMTP设置和授权码正确,否则邮件发送可能会失败。
by chatgpt3.5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/12433.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IT行业的人才培养与教育

你眼中的IT行业现状与未来趋势 随着技术的不断进步&#xff0c;IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链&#xff0c;这些技术正在重塑我们的生活和工作方式。你眼中IT行业的现状及未来发展趋势是怎么样的&#xf…

AI图像生成-调整

一、两张图画风不相似 2、在两张图的共同输出口新添加一个空白正面提示词板块和条件合并板块 二、预处理插件&#xff08;提取人物姿态&#xff09; 1、新建节点-》ControlNet预处理器-》面部与姿态-》Openpose姿态预处理器 2、添加上传图片板块与预览图片板块 3、提取姿态 右…

vue下载文件,获取header头文件名乱码,下载文件名有下划线的解决

后台以数据流将文件返回&#xff0c;将文件名放在header头里&#xff0c;是中文名&#xff0c;有乱码&#xff0c;如图 访问网络使用的是axios&#xff0c;在 // 响应拦截器 service.interceptors.response.use((res) > {........ if (res.config.responseType blob) {//文…

【Linux取经路】进程通信之匿名管道

文章目录 一、进程间通信介绍1.1 进程间通信是什么&#xff1f;1.2 进程间通信的目的1.3 进程通信该如何实现 二、管道2.1 匿名管道2.1.1 站在文件描述符角度深入理解管道2.1.2 接口使用2.1.3 PIPE_BUFFER 和 Pipe capacity2.1.4 管道中的四种情况2.1.5 管道特征总结 2.2 匿名管…

只用了三天就入门了Vue3?

"真的我学Vue3&#xff0c;只是为了完成JAVA课设" 环境配置 使用Vue3要去先下载Node.js。 就像用Python离不开pip包管理器一样。 Node.js — Run JavaScript Everywhere (nodejs.org) 下完Node.js去学习怎么使用npm包管理器&#xff0c;放心你只需要学一些基础的…

【MARIE】嵌入式系统设计半期报告:MARIE模拟器的使用

1.模拟器介绍 1.1 体系结构 MARIE &#xff08;Machine Architecture that is Really Intuitive and Easy&#xff09; 是一种机器架构和汇编语言。发布者还为机器提供了一组用 Java 编写的模拟器程序。MARIE.js 是 MARIE 的 JavaScript 版本实现。它旨在尽可能忠实于原始 Ja…

Spring-Cloud-OpenFeign源码解析-03-FeignClientFactoryBean

在Spring-Cloud-OpenFeign源码解析-02-OpenFeign自动装配分析到OpenFeign 接口代理对象的创建是通过构建成一个 FeignClientFactoryBean 对象&#xff0c;并最后注入到容器中的&#xff0c;那么这个FeignClientFactoryBean是如何实现代理对象创建的呢&#xff1f; FactoryBean…

基于EKF扩展卡尔曼滤波的一阶环形倒立摆控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于EKF扩展卡尔曼滤波的一阶环形倒立摆控制系统simulink建模与仿真。基于扩展卡尔曼滤波&#xff08;Extended Kalman Filter, EKF&#xff09;的一阶环形倒立摆控制系统&…

docker学习和常用命令

参考视频&#xff1a;05.Docker基础-常见命令_哔哩哔哩_bilibili 镜像仓库datahub docker命令官方文档&#xff1a;docker exec | Docker Docs systemtrl docker 启动docker systemtrl start docker停止docker systemtrl stop docker重启docker systemtrl restart docker设…

【并发程序设计】4. exec函数族

4.exec函数族 exec函数族是一组用于在进程中启动另一个程序来替换当前进程的函数。 exec函数族主要用于在当前进程内部执行一个新的程序&#xff0c;而不会创建新的进程。 子进程调用exec函数&#xff0c;族父进程不受影响。进程当前内容被指定的程序替换&#xff0c;但进程…

【YOLOV5 入门】——Gradio搭建Web GUI

引入&#xff1a;上节搭建的UI可视化界面只能以运行程序弹出窗口的形式运行&#xff0c;不能在网页Web中使用&#xff0c;本次代码将会非常少&#xff01; 一、Gradio简介与安装 Gradio 是一个用于构建机器学习模型演示界面和Web应用的开源库。提供了简单易用的界面&#xff0…

云端的艺术革命:云渲染如何重塑动画与视觉特效产业

在 2019 年&#xff0c;乔恩费儒&#xff08;Jon Favreau&#xff09;决定重拍迪士尼的经典电影《狮子王》。他的创新构想是以真实动物为模型&#xff0c;在非洲草原上拍摄&#xff0c;由真实动物“出演”的辛巴和其他角色&#xff0c;随后通过配音赋予它们生命。 为了实现这一…

janus源码分析(1)--代码结构整理

基础说明 janus官网 https://janus.conf.meetecho.com/index.html janus源码地址 https://github.com/meetecho/janus-gateway 编译及部署参考 https://pro-hnb.blog.csdn.net/article/details/137730389?spm1001.2014.3001.5502 https://pro-hnb.blog.csdn.net/article/deta…

flutter常用的指令(签名、adb、shell、keytool、scrcpy)

flutter常用的指令(签名、adb、shell、keytool、scrcpy) run 指定main_dev.dart debug flutter run -t lib/main_dev.dart --debug指定main_dev.dart release flutter run -t lib/main_dev.dart --release插件用到非空安全情况 flutter run -t lib/main_dev.dart --releas…

Linux mtoolstest命令教程:如何测试和显示mtools配置(附实例详解和注意事项)

Linux mtoolstest命令介绍 mtoolstest是一个用于测试mtools配置文件的命令。只需键入mtoolstest即可调用它&#xff0c;无需任何参数。mtoolstest会读取mtools配置文件&#xff0c;并将累积配置打印到标准输出。输出可以作为配置文件本身使用。 Linux mtoolstest命令适用的Li…

【Python探索之旅】列表

目录 特点 入门 访问元素 新增元素 修改元素 插入元素 删除元素 完结撒花 前言 在Python中&#xff0c;列表(List)是最常用的数据结构之一&#xff0c;类似于其他语言&#xff0c;如Java&#xff0c;与其不同啊Python中不需要声明数据类型。它提供了一种灵活且高效的方式…

Linux-线程

目录 1. 线程概念 2. 线程vs进程 3. 线程的优缺点 4. 线程创建 4.1 pthread_create 4.2 pthread_self 5. 线程终止 5.1 return 5.2 pthread_exit 5.3 pthread_cancel 6. 线程等待 7. 线程分离 1. 线程概念 线程&#xff1a;轻量级进程&#xff0c;在进程内部执行&a…

谷歌Gemini时代来了!加固搜索护城河、赋能全家桶,Gemini 1.5 Pro升级至200万token

3 月中旬&#xff0c;谷歌宣布 Google I/O 定档北京时间 5 月 15 日凌晨 1 点。而当大会开幕时间临近&#xff0c;本应是讨论度最高的时候&#xff0c;「宿敌」OpenAI 却半路杀出&#xff0c;抢先一天&#xff0c;仅耗时 27 分钟就发布了颠覆性巨作 GPT-4o&#xff0c;将新一轮…

PyTorch中定义自己的数据集

文章目录 1. 简介2. 查看PyTorch自带的数据集(可视化)3. 准备材料3.1 图片数据3.2 标签数据 4. 方法 1. 简介 尽管PyTorch提供了许多自带的数据集&#xff0c;如MNIST、CIFAR-10、ImageNet等&#xff0c;但它们对于没有经验的用户来说&#xff0c;理解数据加载器的工作原理以及…

【启程Golang之旅】环境设置、工具安装与代码实践

欢迎来到Golang的世界&#xff01;在当今快节奏的软件开发领域&#xff0c;选择一种高效、简洁的编程语言至关重要。而在这方面&#xff0c;Golang&#xff08;又称Go&#xff09;无疑是一个备受瞩目的选择。在本文中&#xff0c;带领您探索Golang的世界&#xff0c;一步步地了…