Linux开机启动文件rc.local无法执行,开机后手动可以启动文件

本文探讨了Linux系统中开机自启动脚本的常见问题及解决方案,特别是当脚本依赖特定路径或存在交互需求时如何确保正确执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux下,如需添加随系统启动而自动运行的服务,只需在/etc/rc.d/rc.local 脚本文件中添加即可。

1、但是遇到一个问题是脚本开机后在terminal下可以正常运行,放在/etc/rc.d/rc.local中没有正常运行或者执行失败

其运行的命令或程序不带路径,如脚本中的命令如下

python ccp_vs/virtual_service_thread.py

在系统执行这些命令时将报错,无法正常执行!究其原因: 由于在执行rc.local脚本时,PATH环境变量未全部初始化,需在执行/etc/profile 后才被添加到环境变量PATH中。

/usr/local/python/python ccp_vs/virtual_service_thread.py

为了在开机启动时执行,部分命令需要使用绝对路径

2、要看程序是否会等待输入,如果有输入的话程序在系统自动启动时也可能会报错,而通过手动启动不会报错。

其实最好的办法就是在要启动的程序里加上一下操作例如:新建个文件夹什么的,看到底是压根没执行还是程序崩溃了,可以将输出导入到某个文件中查看。

### 如何配置 Linux `rc.local` 文件在指定运行级别下实现开机启动 #### 创建并编辑 `/etc/rc.local` 创建或编辑 `/etc/rc.local` 文件,确保其具有可执行权限。对于某些发行版,可能需要手动创建此文件: ```bash sudo touch /etc/rc.local sudo chmod +x /etc/rc.local ``` 编辑该文件以添加要执行的任务。注意开头应包含解释器声明,并且结尾处需有退出状态码[^1]。 ```bash #!/bin/sh -e # rc.local # # This script is executed at the end of each multi-user runlevel. # echo "System initialization complete." exit 0 ``` #### 设置 `rc-local.service` 开机自启 由于现代 Linux 发行版广泛采用 Systemd 来管理服务,因此还需要启用 `rc-local.service` 单元文件来确保 `/etc/rc.local` 能够被执行。这通常涉及到两个步骤:一是确认存在合适的单元文件;二是激活它以便随系统一同启动[^2]。 如果缺少相应的 `.service` 文件,则可以从模板创建一个简单的版本: ```ini [Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target ``` 保存上述内容至 `/etc/systemd/system/rc-local.service` 后,通过下面的命令完成设置: ```bash sudo systemctl daemon-reload sudo systemctl enable rc-local sudo systemctl start rc-local ``` #### 指定运行级别的处理方式 传统 SysVinit 系统允许管理员基于同的运行级别定义行为。然而,在使用 Systemd 的环境中,这种机制已被简化为几个目标(Target),如 `multi-user.target` 或者 `graphical.target`。当希望仅在一个特定的目标状态下触发时,可以在 `[Install]` 部分修改 `WantedBy=` 参数指向所需的目标名称[^3]。 例如,若只想让 `rc.local` 在图形界面登录之前运行,应该把 `WantedBy=multi-user.target` 改成 `WantedBy=default.target` 或其他适当的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值