当前位置: 首页 > news >正文

Linux配置go程序为service后台开机自启动

1.编写需要启动的项目路径以及简单配置

sudo nano /etc/systemd/system/go.service
#定义服务的元数据和依赖关系。
[Unit]
#这是对服务的简短描述。
Description=My Go Service
#network.target 是一个虚拟目标,它表示网络服务已经初始化完成。该指令告诉 systemd 在网络服务启动后再启动这个服务
After=network.target# 定义服务的具体行为和启动参数。
[Service]
# 指定启动服务的可执行文件的路径。这里是 Go 程序的路径,该命令将被 systemd 执行以启动服务。
ExecStart=/opt/go/main
# 指定服务运行时的工作目录。这是服务进程的当前工作目录,通常是可执行文件所在的目录或存放配置文件、数据文件的目录。
WorkingDirectory=/opt/go
# 定义服务的重启策略。当服务进程退出时,无论是正常退出还是异常退出,自动重启服务
Restart=always
# 定运行服务的用户
User=user
# 定运行服务的用户组
Group=user
# 务的标准输出(stdout)重定向到 systemd 日志管理系统 journald,可以通过 journalctl 查看。这有助于集中管理日志信息。
StandardOutput=journal
# 将服务的标准错误输出(stderr)重定向到 journald,这也是为了方便查看错误日志和进行调试。
StandardError=journal
# 定义服务在重启之前等待的秒数。如果服务因某种原因退出,systemd 在重新启动服务之前会等待 10 秒。这可以防止服务在遇到问题时频繁重启。
RestartSec=10# 义了服务安装时的行为和目标。
[Install]
# 定服务在 multi-user.target 目标下激活。multi-user.target 是一个标准的 systemd 目标,表示系统处于多用户模式(类似于传统的运行级别 3)。当系统进入# 目标时,服务将自动启动。这个设置确保服务在系统启动时自动运行。
WantedBy=multi-user.target

简单版本

[Unit]
Description=My Go Service
After=network.target[Service]
# 自己写 启动的方式
ExecStart=/opt/go/main
# 需要自己写 工作的路径
WorkingDirectory=/opt/go
Restart=always[Install]
WantedBy=multi-user.target

Ctrl + O 回车保存 Ctrl + X 退出

2.刷新配置文件

sudo systemctl daemon-reload

3.启动服务

 sudo systemctl restart go.service

4.查看运行状态

 sudo systemctl status go.service
user@LAPTOP-3MT4IFSU:/mnt/c/Users/123456$ sudo systemctl status go.service
● go.service - My Go ServiceLoaded: loaded (/etc/systemd/system/go.service; enabled; vendor preset: enabled)Active: active (running) since Fri 2024-08-02 11:27:48 CST; 4h 20min agoMain PID: 211 (go)

5.设置开机自启动

sudo systemctl enable go.service

6.确认开机自启动

user@LAPTOP-3MT4IFSU:/mnt/c/Users/123456$ systemctl is-enabled wlk-analysis.service
enabled

7.查看运行日志最后几行

sudo journalctl -u go.service -e

The end ~~~~

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring统一返回类型中关于String的问题
  • linux源码编译qt6.5问题解决
  • 基于Spring boot + Vue的灾难救援系统
  • Mojo值的生命周期(Life of a value)详解
  • Python酷库之旅-第三方库Pandas(062)
  • 【WPF开发】安装环境、新建工程
  • 一文读懂SEnet:如何让机器学习模型学会“重点观察”
  • 【Hadoop-驯化】一文教你轻松搞懂hadoop的基本原理
  • 单个或两个及以上java安装与环境变量配置
  • Java码农人生使用手册——类和对象
  • Python教程(十一):单元测试与异常捕获
  • CTFHub XSS DOM 跳转
  • Python面试整理-第三方库
  • C++面向对象高级编程(I)侯捷 自我总结版
  • vim、sublime、notepad文本编辑器的使用
  • [译]如何构建服务器端web组件,为何要构建?
  • 【Linux系统编程】快速查找errno错误码信息
  • 07.Android之多媒体问题
  • 2018一半小结一波
  • C# 免费离线人脸识别 2.0 Demo
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES6语法详解(一)
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript学习总结——原型
  • js如何打印object对象
  • Laravel Telescope:优雅的应用调试工具
  • MobX
  • PAT A1017 优先队列
  • PAT A1050
  • PHP CLI应用的调试原理
  • React 快速上手 - 07 前端路由 react-router
  • 前嗅ForeSpider教程:创建模板
  • 微服务核心架构梳理
  • puppet连载22:define用法
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #include到底该写在哪
  • $.each()与$(selector).each()
  • (1)(1.11) SiK Radio v2(一)
  • (6)设计一个TimeMap
  • (C11) 泛型表达式
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (规划)24届春招和25届暑假实习路线准备规划
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)Linux下编译安装log4cxx
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • ***监测系统的构建(chkrootkit )
  • ../depcomp: line 571: exec: g++: not found
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .Family_物联网
  • .htaccess配置重写url引擎