linux,debian系统如何设置开机自动启动程序(详细!)

linux系统如何开机自动启动可执行文件,对于linux相关系统开机启动工作中我也遇到了相关问题,我是想将写的qt的c++程序进行开机启动可执行文件(其他的可执行文件也是同理),首先得保证用户模式可以运行可执行文件。

一,设置一个启动可执行文件的脚本,可以设置在自己熟悉的目录下。假设你有一个名为your_executable的可执行文件,你想要通过一个名为start_executable.sh的shell脚本来启动它。以下是start_executable.sh脚本的内容:

#!/bin/bash

# 脚本名称:start_executable.sh

# 可执行文件的路径
EXECUTABLE_PATH="/path/to/your_executable"

# 检查可执行文件是否存在
if [ ! -f "$EXECUTABLE_PATH" ]; then
    echo "错误:文件不存在 '$EXECUTABLE_PATH'"
    exit 1
fi

# 检查可执行文件是否有执行权限
if [ ! -x "$EXECUTABLE_PATH" ]; then
    echo "错误:文件没有执行权限 '$EXECUTABLE_PATH'"
    exit 1
fi

# 启动可执行文件
echo "启动可执行文件:$EXECUTABLE_PATH"
"$EXECUTABLE_PATH"

确保将/path/to/your_executable替换为你的可执行文件的实际路径。以下是如何使用这个脚本

  1. 保存上面的脚本到文件start_executable.sh
  2. 给这个脚本文件执行权限。
    chmod +x start_executable.sh
  3. 运行这个脚本。
    ./start_executable.sh

    如果在你的用户命令行而非root用户命令行下成功启动,那么恭喜你完成了第一步。

二,使用systemd服务(现代系统,如Ubuntu 16.04+、CentOS 7+)

因为网上的其他方法我都有尝试,都无法生效,目前我尝试是只有systemd这个有用。

1,创建一个新的服务单元文件,一般在/etc/systemd/system下面创建my_service.service,即一个属于你的service文件,下面的ExecStart=/path/to/your/script.sh路径注意换成你的第一步脚本文件的路径,目的是让系统开机即可读到你的.sh脚本文件

[Unit]
Description=My Service
After=network.target

[Service]
Type=simple
ExecStart=/path/to/your/script.sh

[Install]
WantedBy=multi-user.target

2,重新加载systemd管理器配置:

sudo systemctl daemon-reload

3,启用服务以在启动时自动启动:

sudo systemctl enable my_service.service

此时设置好了,如果重启开机有用,那么恭喜你设置成功,否则可以进入目录进行命令行测试。

启动服务:

sudo systemctl start my_service.service

查看服务状态:

sudo systemctl status my_service.service

查看服务的日志:

journalctl -u my_service.service

停止服务:

sudo systemctl stop my_service.service

此时可以查看电脑的报错,如果发现有报错关于XDG_RUNTIME_DIR的问题,这个需要在上述脚本的前面加上一句,完整的如下所示:

#!/bin/bash

# 脚本名称:start_executable.sh

# XDG_RUNTIME_DIR环境
export XDG_RUNTIME_DIR=/run/user/$(id -u)

# 可执行文件的路径
EXECUTABLE_PATH="/path/to/your_executable"

# 检查可执行文件是否存在
if [ ! -f "$EXECUTABLE_PATH" ]; then
    echo "错误:文件不存在 '$EXECUTABLE_PATH'"
    exit 1
fi

# 检查可执行文件是否有执行权限
if [ ! -x "$EXECUTABLE_PATH" ]; then
    echo "错误:文件没有执行权限 '$EXECUTABLE_PATH'"
    exit 1
fi

# 启动可执行文件
echo "启动可执行文件:$EXECUTABLE_PATH"
"$EXECUTABLE_PATH"

如果这个.sh脚本还会报错,那么应该是环境的问题了,可以通过root用户和普通用户在可执行文件的目录下运行 your_executable,如果普通用户可以运行,root用户不能运行,基本上就是环境依赖的问题了,进入第三步。

3,将程序运行的依赖,比如动态链接库 .so 文件等放入根目录的/lib目录下,再通过命令行用root的用户运行可执行文件,如果成功运行,就代表脚本.sh文件和.service文件都可以生效,可以通过systemctl和开机重启进行测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值