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

ubuntu 创建系统服务 开机自启

现在有一个可执行文件如 iotserver 需要长期运行,并且开机自启动远行

一 步骤

1 确保 iotserver 可执行文件具有执行权限

chmod +x /home/tg/iot/iotserver 

2 单独运行确认可以运行

/home/tg/iot/iotserver

3 创建服务文件

sudo nano /etc/systemd/system/iotserver.service

文件内容如下

[Unit]
# 服务的描述,说明这是IOT服务器
Description=IotServer Server 
# 指定在网络服务启动后再启动此服务,确保网络可用:cite[4]:cite[10]
After=network.target  [Service]# 服务类型,一般为simple或forking,如果你的进程会后台化(daemonize),可能需要用forking
Type=simple    # 指定运行此服务的用户,出于安全考虑,建议在测试成功后改用非root用户(如:www-data, nobody或新建专用用户)     
User=root   
# 指定运行此服务的用户组        
Group=root    # 定义进程退出后的重启方式,always表示总是重启:cite[4]       
Restart=always   # 重启服务之前需要等待的秒数:cite[4]   
RestartSec=5     
# 替换为iotserver程序所在的工作目录的绝对路径,这很重要,因为它决定了程序的当前目录   
WorkingDirectory=/home/tg/iot 
# 替换为iotserver可执行文件的绝对路径
ExecStart=/home/tg/iot/iotserver 
# 如果不需要丢弃输出,可以移除 StandardOutput 和 StandardError 配置,日志将由 systemd 的 journal 管理
# 将标准输出重定向到空设备,类似 >/dev/null
# StandardOutput=null 
# 将标准错误重定向到空设备,类似 2>/dev/null
# StandardError=null  
# 或者,如果你想将日志输出到特定文件,可以使用:
# StandardOutput=file:/var/log/iotserver.log
# StandardError=file:/var/log/iotserver.error.log[Install]
# 指定服务在多用户模式下启用,这是常规的多用户命令行界面运行级别:cite[4]:cite[10]
WantedBy=multi-user.target 

4 重新加载systemd配置

sudo systemctl daemon-reload

5 启动服务,并设置它开机自启:

sudo systemctl start iotserver    # 启动服务
sudo systemctl enable iotserver   # 启用开机自启

6 使用以下命令检查服务是否正常运行28:

sudo systemctl status iotserver

如果服务运行失败,这个命令通常会显示简短的错误信息。

7 要查看更详细的日志,可以使用:

journalctl -u iotserver.service -f  # -f 表示持续输出最新的日志
http://www.dtcms.com/a/361562.html

相关文章:

  • 毕业设计:丹麦电力电价预测预测未来24小时的电价pytorch+lstm+历史特征和价格+时间序列 电价预测模型资源 完整代码数据可直接运行
  • 【Node.js教程】Express框架入门:从搭建到动态渲染商品列表
  • 数据结构基础--最小生成树
  • MiniCPM-V 4.5实战,实现图片、视频、多图的推理
  • Python 爬虫实战:爬取 B 站视频的完整教程
  • 【RK3576】【Android14】PMIC电源管理
  • 【学Python自动化】 6.1 Python 模块系统学习笔记 (与 Rust 对照)
  • 数据结构:单链表的应用(力扣算法题)第三章
  • Windows 电脑安装dify
  • Go初级之六:接口(Interface)
  • VBA开发者的福音:让代码效率暴涨300%的终极数据结构选择指南
  • git使用详解和实战示例
  • 【学习笔记】从“两个细则”到“四遥”
  • docker安装redis,进入命令窗口基操练习命令
  • KubeBlocks for Milvus 揭秘
  • 学习 Android (十八) 学习 OpenCV (三)
  • 向量数据库概述:Faiss、Milvus、Qdrant、Chroma、Weaviate
  • AI 时代的用户体验设计:设计师会被替代,还是更值钱?
  • TCP连接状态详解/同时打开Simultaneous Open
  • 动态滑动窗口还搞不清?一文搞定动态滑动窗口 | 基础算法
  • 如何将多个Excel报表合并为一个汇总文件?
  • C++ multiset数据结构的使用情况说明
  • [界面通过zmq请求调用指定动态库函数(二)]不同动态库接口不同
  • Unity游戏打包——打包流程
  • 【开题答辩全过程】以 中华美食宝典食谱分享系统的设计与实现为例,包含答辩的问题和答案
  • HTML应用指南:利用GET请求获取MSN财经股价数据并可视化
  • 电脑没加域却能获取到IP地址
  • 力扣hot100 | 堆 | 215. 数组中的第K个最大元素、347. 前 K 个高频元素、128. 最长连续序列
  • 鞍点(Saddle Point)一文通透从曲面直觉到博弈与优化
  • 手写MyBatis第46弹:多插件责任链模式的实现原理与执行顺序奥秘--MyBatis插件架构深度解析