当前位置: 首页 > 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.xdnf.cn/news/1226989.html

相关文章:

  • 力扣热题100---------206.反转链表
  • 查看主板信息的3种方法
  • 大模型推理引擎总结
  • 神经网络学习笔记
  • 每日面试题18:基本数据类型和引用数据类型的区别
  • 8.1IO进程线程——文件IO函数
  • Springboot 配置 doris 连接
  • LRU缓存淘汰算法的详细介绍与具体实现
  • VSCode Python 与 C++ 联合调试配置指南
  • 电商项目_性能优化_数据同步
  • Python day31
  • Implement recovery based on PITR using dump file and binlog
  • U-Net vs. 传统CNN:为什么医学图像分割需要跳过连接?
  • 使用gcc代替v语言的tcc编译器提高编译后二进制文件执行速度
  • 9.1无法恢复的错误与 panic!
  • 第二十三天(数据结构:链表补充【希尔表】)
  • golang的函数
  • 完整复现cacti的RCE
  • 机试01-C++基础语法与库函数
  • 大模型结构比较
  • python学智能算法(三十))|SVM-KKT条件的数学理解
  • 第七章 愿景12 小萍分享《人性的弱点》
  • WaitForSingleObject 函数参数影响及信号处理分析
  • C语言:20250801学习(构造类型)
  • JS-第十九天-事件(一)
  • 通过观看数百个外科手术视频课程来学习多模态表征|文献速递-医学影像算法文献分享
  • 从0开始学习R语言--Day64--决策树回归
  • 【2025/08/01】GitHub 今日热门项目
  • Android使用MediaProjectionManager获取游戏画面和投屏
  • 应用药品注册证识别技术,为医药行业的合规、高效与创新发展提供核心驱动力