基于香橙派的程序自启动功能实现
本文最后更新于:2023年10月24日 晚上
使目标程序在Ubuntu开机时自动运行。
方案一:启动配置文件
启动配置文件
打开终端,切换到root账户,然后在/usr/share/applications目录下创建一个名为test.desktop的启动配置文件。
cd /usr/share/applications
sudo vim test.desktop
内容如下:PS.如果你的ubuntu禁用了root账户,只是登录用户,那么你需要手动更改该启动配置文件的权限:1
2
3
4
5
6
7[Desktop Entry]
Version=1.0
Name=test
Exec=/home/zoe04/.vs/UV/out/build/linux-release/UV ###可执行文件的路径
StartupNotify=false
Type=Application
Categories=System;Utility;Archiving;- 查看文件权限:
ls -l /etc/xdg/autostart/test.desktop
- 如果显示:-rw-r–r–,那么表示只有读取权限。
(毕竟只有root用户具有写入权限,而其他用户只有读取权限。)
- 如果显示:-rw-r–r–,那么表示只有读取权限。
- 更改权限:
sudo chown <你的用户名> /etc/xdg/autostart/test.desktop
- 确保文件具有可执行文件:
sudo chmod +x /etc/xdg/autostart/test.desktop
移动文件到指定目录下
将test.desktop文件拷贝到/etc/xdg/autostart目录下:
sudo cp /usr/share/applications/test.desktop /etc/xdg/autostart/test.desktop
重启你的Ubuntu即可
注意:通常情况下,sudo reboot 会在不要求重新登录的情况下重启计算机。因此,不要用这个指令重启。
这个.desktop文件是使程序在用户登录后自动启动
。
方案二:写一个脚本
编写.sh脚本
nano my_cpp_startup_script.sh
1
2#!/bin/bash
/path/to/your_executable- 授予脚本可执行权限:
chmod +x my_cpp_startup_script.sh
- 将脚本移动到
/etc/init.d/
目录
sudo mv my_cpp_startup_script.sh /etc/init.d/
- 使用适用于你的Linux发行版的方法启用开机自启动。
对于Systemd-based系统,可以使用systemctl:sudo systemctl enable my_cpp_startup_script.sh
可能遇到的问题:
- sudo systemctl enable test.sh
终端输出:原因:test.sh没有定义适当的Default-Start和Default-Stop runlevels。1
2
3test.sh.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable test.sh
update-rc.d: error: test.sh Default-Start contains no runlevels, aborting.解决方案:创建一个systemd服务单元文件,并在其中定义test.sh的启动和停止行为
- 创建一个systemd服务单元文件,比如test.service:
sudo nano /etc/systemd/system/test.service
- 编辑文件内容(确保替换/path/to/your/test.sh为test.sh脚本的绝对路径)
1
2
3
4
5
6
7
8
9[Unit]
Description=Your Test Script
[Service]
Type=simple
ExecStart=/bin/bash /path/to/your/test.sh
[Install]
WantedBy=multi-user.target - 保存并关闭文件。
ctrl^O
:保存文件- 按下
Enter
键确认保存 ctrl^X
:退出
- 启用并启动这个新的systemd服务:
sudo systemctl enable test.service
sudo systemctl start test.service
现在,test.sh脚本应该
被设置为在系统启动时自动执行。
- 检查服务状态:
sudo systemctl status test.service
- 问题解决,成功运行~
基于香橙派的程序自启动功能实现
http://zoechen04616.github.io/2023/10/24/香橙派自启动脚本/