如何服务器用守护进程保证程序稳定运行

发布时间:2024年01月19日

如何服务器用守护进程保证程序稳定运行

一、前言

平常在使用服务器的时候,服务一直不稳定,遂从nohup改为创建一个systemd服务来管理Python程序。
要求:有root权限

二、步骤

1、创建systemd服务文件

创建一个新的systemd服务文件,例如/etc/systemd/system/your-service.service
我的是app.py
那么就创建:/etc/systemd/system/app.service
内容模版如下:

[Unit]
Description=My Python Service
After=network.target

[Service]
ExecStart=/usr/bin/python /home/username/app/your_script.py
Restart=always
User=username
Group=username
Environment=PATH=/usr/bin:/usr/local/bin
WorkingDirectory=/home/username/app
StandardOutput=journal
StandardError=journal
SyslogIdentifier=my-python-service

[Install]
WantedBy=multi-user.target

模版中必须修改的地方有下面三个:

  1. ExecStart: 指定你的 Python 解释器的路径(如果你使用了虚拟环境,这里应该是虚拟环境中的 Python 解释器路径)和你的 Python 脚本的路径。
  2. User 和 Group: 指定运行该服务的用户和组,确保该用户对你的 Python 脚本有执行权限。
  3. WorkingDirectory: 指定你的 Python 脚本的工作目录,通常是脚本所在的目录。
    写好后如下:
    在这里插入图片描述

2、应用更改并重启服务

在做出这些更改后,重新加载 systemd 配置并尝试重启服务:

sudo systemctl daemon-reload
sudo systemctl restart app.service

重启systemctl服务完后,程序就能稳定运行了

3、查询服务状态以及日志输出

方法一:查询systemctl服务下所启动服务的状态

sudo systemctl status app.service   

注:app.service改为第一步你创建的服务文件
在这里插入图片描述
方法二:使用journalctl 工具查询启动服务的日志
journalctl 是一个用于查询和显示从 systemd 日志管理器收集的日志的工具。systemd-journald 服务收集和管理来自内核、启动过程、系统服务以及其他来源的日志信息。这些日志被存储在一个结构化、索引化的二进制文件中,通常位于 /var/log/journal/ 目录下。

journalctl 提供了强大的功能来检索和分析日志数据。它可以用来:

  • 显示所有日志信息,从最早到最新。
  • 过滤日志条目,基于时间、服务、优先级等标准。
  • 跟踪实时日志输出。
  • 显示特定时间范围内的日志。
  • 显示特定系统服务或单元的日志。
  • 输出日志到不同的格式,如 JSON。
  • 导出日志数据供进一步分析。

查询指令如下

sudo journalctl -u app.service

注:app.service改为第一步你创建的服务文件

文章来源:https://blog.csdn.net/qq_51116518/article/details/135706298
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。