linux Systemd为裸机goLand应用保驾护航

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党

背景

线上有一个Goland的应用程序,goland语言和java不同,如果有任何异常就直接挂掉退出,异常处理要实现
try catch也比较麻烦。

但是部署很方便。因为是脚本语言。启动goland打包好的二进制文件只需要

.\main

但是如果进程挂了不会自动重启

Systemd程序

Systemd是linux用来管理应用程序的一个程序。

简单理解就是我们可以通过Systemd去启动一些简单的脚本程序等。

可以实现简单的类似看门狗机制,如果进程挂了会自动帮忙重启

如何通过Systemd启动goland程序

配置服务

  1. 进入/etc/systemd/system目录

  2. 新增一个服务启动文件,比如叫mq.service

vim mq.service

填入如下内容

[Unit]
Description=MQ Service
After=network.target[Service]
ExecStart=/data/mq/main
WorkingDirectory=/data/mq
Restart=always[Install]
WantedBy=multi-user.target

这里简单说明下各个配置的含义

- Unit- Description,服务的描述- Documentation,文档介绍- After,该服务要在什么服务启动之后启动,比如Mysql需要在network和syslog启动之后再启动
- Install- WantedBy,值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名+.wants后缀构成的子目录中- RequiredBy,它的值是一个或多个Target,当前Unit激活(enable)时,符号链接会放入/etc/systemd/system目录下面以Target名+.required后缀构成的子目录中- Alias,当前Unit可用于启动的别名- Also,当前Unit激活(enable)时,会被同时激活的其他Unit
- Service- Type,定义启动时的进程行为。它有以下几种值。- Type=simple,默认值,执行ExecStart指定的命令,启动主进程- Type=forking,以 fork 方式从父进程创建子进程,创建后父进程会立即退出- Type=oneshot,一次性进程,Systemd 会等当前服务退出,再继续往下执行- Type=dbus,当前服务通过D-Bus启动- Type=notify,当前服务启动完毕,会通知Systemd,再继续往下执行- Type=idle,若有其他任务执行完毕,当前服务才会运行- ExecStart,启动当前服务的命令- ExecStartPre,启动当前服务之前执行的命令- ExecStartPost,启动当前服务之后执行的命令- ExecReload,重启当前服务时执行的命令- ExecStop,停止当前服务时执行的命令- ExecStopPost,停止当其服务之后执行的命令- RestartSec,自动重启当前服务间隔的秒数- Restart 指定服务在停止后是否应该自动重新启动- TimeoutSec,定义 Systemd 停止当前服务之前等待的秒数- Environment,指定环境变量- WorkingDirectory 工作目录- ExecStart 启动脚本

我们主要是配置了Restart=always,如果服务异常退出就会自动重启
其他的都没怎么配置

这里我们就配置完我们的启动脚本了,接下来我们就看看如何启动

启动服务

systemctl start mq.service

systemctl常用命令

# 启动服务
systemctl start mq.service
# 查看服务状态
systemctl status mq.service
# 重启服务
systemctl restart mq.service
# 列出正在运行的Unit
systemctl list-units
# 列出所有Unit,包括没有找到配置文件的或者启动失败的
systemctl list-units --all
# 列出所有没有运行的 Unit
systemctl list-units --all --state=inactive
# 列出所有加载失败的 Unit
systemctl list-units --failed# 列出所有正在运行的、类型为service的Unit
systemctl list-units --type=service
# 重新加载一个服务的配置文件
sudo systemctl reload mq.service# 重载所有修改过的配置文件
sudo systemctl daemon-reload

查看服务log

# 查看所有服务日志
journalctl
# 查看指定时间的日志
journalctl --since="2012-10-30 18:17:16"
journalctl --since "20 min ago"
journalctl --since yesterday
journalctl --since "2015-01-10" --until "2015-01-11 03:00"
journalctl --since 09:00 --until "1 hour ago"# 显示尾部的最新10行日志
journalctl -n# 显示尾部指定行数的日志
journalctl -n 20# 实时滚动查看指定服务最新日志
journalctl -u mq.service -f
# 查看包含指定关键字的服务log
journalctl -u mq.service | grep -i "小奏技术"

log配置

配置文件在/etc/systemd/journald.conf

  • SystemMaxUse:指定journal日志文件占用的最大磁盘空间。当日志文件占用的磁盘空间超过这个值时,旧的日志将被删除。可以使用K、M、G等单位来指定大小。
  • SystemKeepFree:指定journal日志文件系统应该保持的最小可用磁盘空间。当磁盘空间低于这个值时,旧的日志将被删除。
  • SystemMaxFileSize:指定journal日志文件的最大单个文件大小。当单个日志文件的大小超过这个值时,旧的日志将被删除。
  • SystemMaxRetentionSec:指定journal日志文件应该保留的最长时间。超过这个时间的日志将被删除

总结

总的来说使用systemctl去部署一些简单服务还是比较不错的,挂了可以自动拉取,也可以配置log信息等

参考

  • systemctl命令介绍和使用

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

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

相关文章

等级保护安全的管理机构与管理制度

目录 安全管理机构的控制点 岗位设置 人员配备 授权和审批 沟通和合作 审核和检查 安全管理制度的控制点 安全管理制度 指定和发布 评审和修订 安全管理机构的控制点 岗位设置 人员配备 授权和审批 沟通和合作 审核和检查 安全管理制度的控制点 安全管理制度 指定…

云卷云舒:算力网络+云原生(中):探索构建算力网络数据库

一、导言 1、基础要求:算力网络时代,数据类型、范围充分延展和爆发,数据库也要适应起来,分布式数据库是起步要求; 2、近期需求:通过云服务的方式提供算网时代,尤其是智能大模型所需要的向量数…

042、文本与语言模型

之——nlp基础 目录 之——nlp基础 杂谈 正文 1.文本预处理 2.语言模型 3.语言模型实现 杂谈 在语言模型中,需要对文本进行预处理,进行数字化的一系列操作,而后才能进行网络的拟合。 以前的相关:词性判断 正文 1.文本预处…

简易的555函数信号发生器电路图

函数信号发生器是一种信号发生装置,能产生某些特定的周期性时间函数波形(正弦波、方波、三角波、锯齿波和脉冲波等)信号,频率范围可从几个微赫到几十兆赫。除供通信、仪表和自动控制系统测试用外,还广泛用于其他非电测…

基于深度学习的安全帽检测识别系统(含UI界面、yolov5、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下: 算法模型:     yolov5 yolov5主要包含以下几种创新:         1. 添加注意力机制(SE、CBAM、CA等)         2. 修改可变形卷积(DySnake-主…

输入url后回车发生了什么(持续更新)

在大多数情况下,浏览器被认为是单线程的。也就是说,他们从头到尾执行一项任务,然后再开始另一项任务。为了实现流畅的交互,开发人员的目标是确保高性能的站点交互,从平滑滚动到触摸响应。渲染时间是关键,确…

Wireshark网络工具来了

Wireshark是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。 Wireshark是一个免费开源软件,不需要付费,免费使用,可以直接登陆到Wireshark的官网下载安装。 在windows环境中&#x…

FPFA.一种二倍频电路代码描述以及测量详情

一、前言 1、因为需要倍频电路所以找了个二倍频的电路,通过fpga实际测量发现经过倍频后的电路峰值降低。不过这个也正常,因为该电路只要过触发点就会开始发生波形变化,而电路的触发值不是峰值。​​​​​​​ 2、继续对电路做倍频后信号做二…

LeetCode_Java判断给出的字符串是否是合法的括号序列

public class BracketSequence {public static void main(String[] args) {System.out.println(isValid("([])"));}public static boolean isValid(String s) {if(snull || s.length()0){return true;}//新建栈&#xff0c;用以存储左括号Stack<Character> sta…

嵌入式开发常见的3个C语言技巧

​1.操作寄存器 在嵌入式开发中&#xff0c;常常要操作寄存器&#xff0c;对寄存器进行写入&#xff0c;读出等等操作。每个寄存器都有自己固有的地址&#xff0c;通过C语言访问这些地址就变得尤为重要。 #define GSTATUS1 (*(volatile unsigned int *)0x560000B0)在这里…

国外加固Appdome环境检测与绕过

文章目录 前言第一部分&#xff1a;定位检测逻辑的通用思路1. 通过linux“一切皆文件”思路定位2. 分析现有检测软件猜测可能检测点3. 通过正向开发思路定位4. 通过activity及弹窗定位 第二部分&#xff1a;检测结果展示整体流程1. Jni反射调用doDispath完成广播发送2. NativeB…

第11章 GUI Page439 步骤十二 为图元编号 支持直线

运行效果&#xff1a; 关键代码&#xff1a; 为IItem类新增三个函数&#xff0c;两个纯虚 为直线类&#xff0c;新增一个_index成员&#xff0c;并实现GetIndex和SetIndex两个函数 窗口类新增一个 _item_id成员&#xff0c;并初始化 在将图元压入队列之前&#xff0c;设置图元…

多继承与多重继承

多继承与多重继承 实验介绍 多继承与多重继承虽然只相差一个字,但是却是两个不同的概念。实验首先是要区分多继承与多重继承,其次是要学习多继承与多重继承的使用方式。 知识点 多继承与多重继承概念继承构造函数多继承与多重继承概念 多继承与多重继承可以从字面上理解。…

IDEA2018升级2023,lombok插件不兼容导致get/set方法无法使用

1、问题 最近了解到一款叫CodeGeeX 的智能编程助手&#xff0c;想要试用一下&#xff0c;但是IDEA2018版本太低了&#xff0c;没有CodeGeeX插件&#xff0c;于是打算将IDEA升级到2023.2.5版本&#xff0c;具体升级过程略过&#xff0c;升级完成后&#xff0c;启动项目&#xf…

图像去噪综述

传统方法 最经典最新的图像去噪算法 (360doc.com) 图像去噪算法综述 - 百度文库 (baidu.com) 传统图像去噪总结_传统图像降噪算法-CSDN博客 图像降噪有哪些方法&#xff1f; (qq.com) 深度学习方法 综述 | 图像去噪方法比较 (qq.com)

【强化学习】PPO:近端策略优化算法

近端策略优化算法 《Proximal Policy Optimization Algorithms》 论文地址&#xff1a;https://arxiv.org/pdf/1707.06347.pdf 一、 置信域方法(Trust Region Methods) ​ 设 π θ o l d \pi_{\theta_{old}} πθold​​是先前参数为 θ o l d \theta_{old} θold​的策略网…

市场复盘总结 20231225

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整 昨日回顾&#xff1a; SELECT CODE,成交额排名,净流入排名,代码,名称,DDE大单金额,涨幅,主力净额,DDE大单净量,CONVERT(DATETIME, 最后封…

C++入门编程一(基本框架代码、宏定义、标识符、数据类型)

文章目录 一、基本框架代码解释多行注释缩进自动排版宏定义关键字 标识符命名规则标识符sizeof()关键字实型(浮点型)字符型转义字符字符串类型布尔类型数据的输入 基于b站黑马c视频做的笔记&#xff0c;仅供参考和复习&#xff01;&#xff01;&#xff01; 一、基本框架代码解…

Java Web Day07-08_Layui

1. Layui概念介绍 layui&#xff08;谐音&#xff1a;类 UI) 是一套开源的 Web UI 解决方案&#xff0c;采用自身经典的模块化规范&#xff0c;并遵循原生 HTML/CSS/JS 的开发方式&#xff0c;极易上手&#xff0c;拿来即用。其风格简约轻盈&#xff0c;而组件优雅丰盈&#x…

【算法集训】基础数据结构:十三、哈希表

今天是基础数据结构的最后一个。至此我们的基础数据结构系列就结束了!!! 这几天先告一段落&#xff0c;等期末考试完继续更新算法系列。 哈希表又叫散列表&#xff0c;通常用数组来实现&#xff0c;又叫做哈希数组。 一、概念 常用哈希函数 1、直接定址法&#xff1b; 关键字…