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

系统开机时自动执行指令

使用 systemd 创建一个服务单元可以让系统开机时自动执行指令,假设需要执行的指令如下,运行可执行文件(/home/demo/可执行文件),并输入参数(–input=/home/config/demo.yaml):

/home/demo/可执行文件 --input=/home/config/demo.yaml

✅ 推荐方法:使用 systemd

1. 创建服务文件

以 root 权限创建一个新的服务文件,例如:

sudo nano /etc/systemd/system/demo.service
2. 编写服务内容

将以下内容粘贴进去(根据你的实际路径和用户名修改):

[Unit]
Description=demo
After=network.target[Service]
ExecStart=/usr/bin/taskset -c 0/home/demo/可执行文件 --input=/home/config/demo.yaml
Restart=always
User=yourusername
Environment="DISPLAY=:0"
StandardOutput=syslog
StandardError=syslog[Install]
WantedBy=multi-user.target

⚠️ 注意:

  • yourusername 替换为你运行这个程序的实际用户。
  • 如果程序需要图形界面或访问 X11,请确保 Environment="DISPLAY=:0" 正确。
  • 如果不需要 taskset,可以直接写成 ExecStart=/home/cpp/build/tennis_line --input=/home/config/lines.yaml
  • 一般情况下只需要更改ExecStartUser
配置项含义
DescriptionTennis Line Detection Service服务名称描述
Afternetwork.target在网络就绪后启动
ExecStarttaskset -c 0 …实际执行的命令
Restartalways出现任何退出都重启
Useryourusername指定运行服务的用户
EnvironmentDISPLAY=:0设置环境变量,用于图形界面,指定显示器
StandardOutputsyslog标准输出记录到 syslog
StandardErrorsyslog错误输出也记录到 syslog
WantedBymulti-user.target在多用户模式下启动
3. 重新加载 systemd 配置
sudo systemctl daemon-reload
4. 启用服务开机自启
sudo systemctl enable tennis-line.service
5. 可选:立即启动服务
sudo systemctl start tennis-line.service
6. 查看日志确认是否运行正常
journalctl -u tennis-line.service

禁用开机自启

  1. 禁用服务

    使用 systemctl disable 命令可以禁用指定的服务,使其不会在系统启动时自动启动。

    sudo systemctl disable demo.service
    

    这个命令会移除 /etc/systemd/system/multi-user.target.wants/ 目录下的相应符号链接(如果存在),从而达到禁止该服务随系统启动而启动的目的。

  2. 停止正在运行的服务(可选)

    如果这个服务当前正在运行,并且想停止它,可以使用 systemctl stop 命令:

    sudo systemctl stop demo.service
    
  3. 确认服务已被禁用

    可以通过查询服务的状态来确认它是否已经被正确禁用。禁用后,服务将不会随着系统的启动而自动启动,但仍然可以通过手动启动来运行。

    sudo systemctl demo.service
    

    在输出中,会看到类似“Loaded: loaded (…) disabled;”的信息,表示该服务已禁用。

删除服务文件(可选)

如果确定以后完全不需要这个服务了,也可以考虑删除相应的服务单元文件。请谨慎操作,因为这将永久删除该服务的所有配置。

sudo rm /etc/systemd/system/tennis-line.service

之后,别忘了重新加载 systemd 配置,以便更改生效:

sudo systemctl daemon-reload

完成以上步骤后, demo.service 就不会再在系统启动时自动启动了。

http://www.dtcms.com/a/310581.html

相关文章:

  • Java:JWT 从原理到高频面试题解析
  • 04 基于sklearn的机械学习-梯度下降(上)
  • 什么样的业务需要国内动态IP轮换?
  • 第二篇:Linux 文件系统操作:从基础到进阶
  • RAL-2025 | “藏宝图”驱动的具身导航!HAM-Nav:基于手绘地图引导的机器人导航
  • GitPython08-源码解读
  • 进阶08:C#与SQL Server通信
  • 高效连接,3针M12航空插头助您畅行无阻
  • PSA 制氧装置和VPSA 制氧装置技术特点有什么不同
  • [VL|RIS] ReferSAM
  • windows电脑开机或重启,server不能自启动
  • 关税战火中的技术方舟:新西兰证券交易所的破局之道 ——从15%关税冲击到跨塔斯曼结算联盟,解码下一代交易基础设施
  • 开发后台管理系统的注意事项
  • 26考研|数学分析:曲线(面)积分·三大公式
  • Windows系统优化命令-记录
  • 全国增值税发票查验流程-批量核验-接口集成简便高效
  • 四、基于SpringBoot,MVC后端开发笔记
  • opencv-python的GPU调用
  • 在线免费的AI文本转语音工具TTSMaker介绍
  • U-Mail邮件系统-全面适配信创环境的国产邮件系统
  • 什么是大端?什么是小端?如何验证?
  • MySQL相关概念和易错知识点(3)(表内容的CURD、内置函数)
  • 基于CNN卷积神经网络图像识别28个识别合集-视频介绍下自取
  • Tushare 行情数据完整性同步算法
  • 三轴云台之热成像伪彩模式篇
  • 【Lua】题目小练7
  • Nestjs框架: 请求生命周期与应用生命周期
  • Vue模板语法详解:从基础到进阶的响应式绑定指南1
  • 工业数采引擎-DTU
  • CSS属性值计算规则:从声明到渲染的精确过程