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

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

一、前言

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

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

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

相关文章

【计算机网络】HTTP协议以及简单的HTTP服务器实现

文章目录 一、HTTP协议1.认识URL2.urlencode和urldecode3.HTTP协议格式4.HTTP的方法5.HTTP的状态码6.HTTP常见Header7.重定向8.长连接9.会话保持10.基本工具 二、简单的HTTP服务器实现1.err.hpp2.log.hpp3.procotol.hpp4.Sock.hpp5.Util.hpp6.httpServer.hpp7.httpServer.cc8.总…

C语言中的浮点数存储

首先明确一个概念:C语言中整形是按照二进制存储在内存中,浮点型是按科学计数法存储在内存中(本质上存储的还是二进制数据0和1)。 如果没看懂这句话,没关系!看完以下正文,你就会豁然开朗&#x…

AI 编程的机会和未来:从 Copilot 到 Code Agent

大模型的快速发展带来了 AI 应用的井喷。统计 GPT 使用情况,编程远超其他成为落地最快、使用率最高的场景。如今,大量程序员已经习惯了在 AI 辅助下进行编程。数据显示,GitHub Copilot 将程序员工作效率提升了 55%,一些实验中 AI …

springboot+vue二手车交易网站设计7e4oj

在明确系统的用途,以及系统的目标用户群后,可以对本系统的功能进行设置,可以获取调研用户对功能的要求,也可以对市场上同类系统进行分析和总结,得出本系统的功能。 二手车交易网站设置了管理员权限,其用例图…

python微博爬虫情感分析可视化系统 舆情分析 python 大数据 TF-IDF算法 Flask框架 毕业设计(源码)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

深入浅出AI落地应用分析:国内Top10应用

接下来会每周集中体验一些通用或者垂直的AI落地应用,主要以一些全球或者国外国内排行较前的产品为研究对象,「AI 产品榜: aicpb.com」以专题的方式在博客进行分享。 1. 文心一言 产品链接:https://yiyan.baidu.com/ 产品介绍&…

[力扣 Hot100]Day7 接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 出处 思路 就是寻找“凹”形区间,找使得左右两端点为最大的两个值的最长区间。这里我分了两种情况,右边大于等于左边…

Jvm相关知识(面试高级必备)

类的实例化顺序 先静态、先父后子 先静态:父静态>子静态 优先级:父类>子类 静态代码块>非静态代码块>构造函数 一个类的实例化过程: ①.父类的static代码块,当前类的static; ②.顺序执行…

【MySQL自身的性能优化】InnoDB 的 Buffer Pool

这里写目录标题 一、引入缓存的重要性二、InnoDB 的 Buffer Pool1. Buffer Pool 内部组成2. free 链表管理空闲页3. flush 链表管理脏页4. LRU 链表提高缓存命中那咱需要咋地解决预读问题呢?那咱需要咋地解决 Buffer Pool 污染问题呢? 5. 脏页什么时候被…

C语言中的字符串操作函数自定义实现:标准版与限定长度版

目录 1. 标准字符串操作函数自定义实现 (a) 自定义strcpy函数 (b) 自定义strcat函数 (c) 自定义strcmp函数 2. 限定长度字符串操作函数自定义实现 (a) 自定义strncpy函数 (b) 自定义strncat函数 (c) 自定义strncmp函数 对字符串的操作是不可或缺的一部分。标准库提供了…

[bat]0基础实现自动化办公-基于start实现一键打开常用软件/文档

一、应用背景 每次开机时,都要一个个打开常用软件,比如微信、QQ或是word文档、excel表格等程序,比较费时。 二、方案 使用bat脚本中的start方法,通过将需要打开的程序或文件写入到bat脚本中,运行bat脚本从而实现一键…

关于前端面试中forEach方法的灵魂7问?

目录 前言 一、forEach方法支持处理异步函数吗? 二、forEach方法在循环过程中能中断吗? 三、forEach 在删除自己的元素后能重置索引吗? 四、forEach 的性能相比for循环哪个好? 五、使用 forEach 会不会改变原来的数组&#…