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

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

一、前言

平常在使用服务器的时候,服务一直不稳定,遂从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改为第一步你创建的服务文件

相关推荐

  1. Qt 进程守护程序

    2024-01-20 09:04:08       34 阅读
  2. Linux学习—Linux服务守护进程

    2024-01-20 09:04:08       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-20 09:04:08       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-20 09:04:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-20 09:04:08       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-20 09:04:08       20 阅读

热门阅读

  1. [算法与数据结构]:LRU Cache 的原理与C++实现

    2024-01-20 09:04:08       35 阅读
  2. Linux 命令:grep

    2024-01-20 09:04:08       38 阅读
  3. 高并发服务器 poll模型 非阻塞 讲解

    2024-01-20 09:04:08       35 阅读
  4. 【Linux】01 Ubantu安装NFS服务器及其使用

    2024-01-20 09:04:08       32 阅读
  5. 算法训练营Day44

    2024-01-20 09:04:08       31 阅读
  6. 【C#】Int32.Parse()、Int16.Parse()

    2024-01-20 09:04:08       31 阅读
  7. 数据备份与恢复

    2024-01-20 09:04:08       29 阅读
  8. Spring最常用组件注册注解开发案例

    2024-01-20 09:04:08       31 阅读
  9. ABAP - 变量杂例1

    2024-01-20 09:04:08       31 阅读
  10. MySQL 深度分页

    2024-01-20 09:04:08       20 阅读