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

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

一、前言

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

操作系统-操作系统的运行机制(内核程序 应用程序 特权指令 非特权指令 内核态 用户态 变态)

文章目录 总览预备知识:程序是如何运行的?内核程序vs应用程序特权指令vs非特权指令内核态vs用户态用户态,内核态的切换小结 总览 预备知识:程序是如何运行的? 转换为机器码放入内存,然后按顺序执行 内核…

c JPEG 1D DCT 优化二(AAN)

这两个图可能就是AAN 的数学模型 优化DCT就是用代码实现矩阵9,10 9和10已经把64个系数缩小到一半32个了。光从这两图可看出,优化后乘法少了64-32436个,加法少了64-32-824。估计优化时间可少百分之40左右。 实际编码640480 的图片,程序执行时…

MySQL窗口函数(MySQL Window Functions)

1、窗口函数基本概念 官网地址:https://dev.mysql.com/doc/refman/8.0/en/window-functions.html 窗口可以理解为 记录集合,窗口函数就是在满足某种条件的记录集合上执行的特殊函数。 即:每条记录都要在此窗口内执行函数。 静态窗口&#x…

多目标优化中常用的差分进化算法DE【2】

# 多目标优化中常用的进化算法 1、链接一 2、链接二 #后续继续补充多目标的差分进化算法MODE的应用 此链接介绍很详细,此处用来分享学习,后续有问题会继续进行补充。 如果你觉得不错,佛系随缘打赏,感谢,你的支持是…

「完美世界」石昊融合仙金化真龙,八九天功小成,借天时斩杀真神

Hello,小伙伴们,我是拾荒君。 国漫《完美世界》第146期超前爆料,据透露石昊从天人族手中意外夺得一件名为“仙金”的神秘宝物。这件宝物颇具灵性,令石昊十分好奇。而令人震惊的是,这仙金竟然能够承受齐道临的一击。齐道临透露&am…

HackTheBox - Medium - Linux - Health

Health Health 是一台中型 Linux 计算机,在主网页上存在 SSRF 漏洞,可利用该漏洞访问仅在 localhost 上可用的服务。更具体地说,Gogs 实例只能通过 localhost 访问,并且此特定版本容易受到 SQL 注入攻击。由于攻击者可以与 Gogs …

我在阿里巴巴是是这样做架构师的

阿里巴巴是杭州的标志性大型互联网公司,也是中国做电商最成功的企业,几乎所有玩电商的都是以阿里巴巴为权威机构,当然这个只是在国内是这样的,那么国外还是有很强的竞争对手的,比如亚马逊。 那么作为一名资深的架构师…

JavaScript DOM可以做什么?

1、通过id获取标签元素 DOM是文档对象模型&#xff0c;它提供了一些属性和方法来方便我们操作document对象&#xff0c;比如getElementById()方法可以通过某个标签元素的id来获取这个标签元素 // 用法 window.document.getElementById(id); // 例子 <!DOCTYPE html> &l…

C#MQTT编程07--MQTT服务器和客户端(wpf版)

1、前言 上篇完成了winform版的mqtt服务器和客户端&#xff0c;实现了订阅和发布&#xff0c;效果666&#xff0c;长这样 这节要做的wpf版&#xff0c;长这样&#xff0c;效果也是帅BBBB帅&#xff0c;wpf技术是cs程序软件的福音。 wpf的基础知识和案例项目可以看我的另一个专…

Zookeeper安装教程

系列文章目录 Zookeeper简介 文章目录 前言一、选择安装包二、使用wget下载并安装zookeeper 前言 Linux下Zookeeper安装步骤 一、选择安装包 Zookeeper下载地址&#xff1a;https://zookeeper.apache.org/releases.html 选择一个稳定版本即可&#xff0c;我这里选择的是3.7.2…

微服务-服务拆分和远程调用

任何分布式架构都离不开服务的拆分&#xff0c;微服务也是一样。 一、服务拆分原则 微服务拆分时的几个原则&#xff1a; 不同微服务&#xff0c;不要重复开发相同业务 微服务数据独立&#xff0c;不要访问其它微服务的数据库 微服务可以将自己的业务暴露为接口&#xff0c;…

C++ 数论相关题目(约数)

1、试除法求约数 主要还是可以成对的求约数进行优化&#xff0c;不然会超时。 时间复杂度根号n #include <iostream> #include <vector> #include <algorithm>using namespace std;int n;vector<int> solve(int a) {vector<int> res;for(int i…

系统性学习vue-vuex

系统性学习vue-vuex 理解vuexvuex工作原理搭建vuex环境案例Vuex的开发者工具使用getters配置项mapState与mapGettersmapActions和mapMutationsvuex模块化namespace 理解vuex 概念&#xff1a; 专门在Vue中实现集中式状态&#xff08;数据&#xff09;管理的一个Vue插件&#xf…

GIS复试Tips(特别是南师大)

注&#xff1a;本文仅个人观点&#xff0c;仅供参考 在这提前㊗️24年考南师大GISer成功上岸&#xff01; 当然&#xff0c;考研是个考试&#xff0c;总有人顺利上岸&#xff0c;稳上岸或逆袭上岸&#xff0c;但可能也有人被刷&#xff0c;这是常态。 所以&#xff0c;㊗️你…

RHCE作业

网站需求&#xff1a; 题目一&#xff1a; 基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! 配置&#xff1a; 1&#xff0c;关闭防护墙&#xff0c;关闭selinux [rootnodel ~]# systemctl stop firewalld [rootnodel ~]# se…

TEE2024大湾区进出口贸易博览会

TEE2024大湾区进出口贸易博览会 INTE 2024RNATIONAL TRADE E-COMMERCE EXPO 时间&#xff1a;2024年08月11--13日 地点&#xff1a;深圳福田会展中心 联合主办&#xff1a; 深圳市电子商务协会 深圳市跨境电子商务行业发展促进会 广东进出口商会 广东省国牌出海电子商务…

Qt/QML编程之路:OpenGL的示例(39)

Qt编程之后,会发现有版本问题,有时候一个示例不同的版本下可能会跑不同,有些Qt5跑不同Qt6已经完善,可以跑通。 我就看到有个关于OpenGL的示例: 这个示例是演示怎么基于OpenGL编程的,但是调试时却发现glViewXXX等gl打头的函数说找不到reference,或者什么link不上之类的错…

ffmpeg 常用命令行详解

概述 ffmpeg 是一个命令行音视频后期处理软件 1. 裁剪命令 参数说明 -i 文件&#xff0c;orgin.mp3 为待处理源文件-ss 裁剪时间&#xff0c;后跟裁剪开始时间&#xff0c;或者开始的秒数-t 裁剪时间output.mp3 为处理结果文件 ffmpeg -i organ.mp3 -ss 00:00:xx -t 120 o…

轻松一刻 浅休息下哈

yum -y install epel-release yum install -y linux_logo cal 此命令以日历表的方式显示日期 curl http://wttr.in 此网站进行在屏幕上面显示天气情况

mybatis-plus批量保存异常及效率优化

最近基于自己公司内部服务维护&#xff0c;发现其中调度中心近期出现不少错误日志&#xff0c;但是该任务却是正常执行&#xff0c;生成的报表数据也是正常的&#xff0c;所以很多天没有发现问题 这就匪夷所思了&#xff0c; 经仔细排查发现&#xff0c;是触发了feign超时hyst…