linux/系统运维

rc.local中的命令不能执行

daimafengzi · 11月19日 · 2024年 · · · 本文共896个字 · 预计阅读3分钟27次已读

问题描述

在使用较新版本的Ubuntu系统中,之前写入rc.local的开机执行命令不执行了。经探究发现,Ubuntu自18.04版本后改用systemd管理系统,不再用initd管理系统,默认也没有/etc/rc.local文件。

问题分析

1. 先用systemctl status rc-local查看状态
rc.local中的命令不能执行
2. 设置rc-local开机自启,输出如下错误信息:

systemctl enable rc-local

rc.local中的命令不能执行
大概意思是rc-local服务文件没有install字段的相关信息,这些相关信息包括WantedBy, RequiredBy, Also, Alias。如果不写则系统不认为它是一个systemd服务。
3. 打开文件/lib/systemd/system/rc-local.service(如无此文件则新建),做如下配置:

[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

[Install]
WantedBy=multi-user.target
# 指的是表示该服务所属 target
Alias=rc-local.service

其中Unit字段描述服务的启动顺序&依赖关系,Service字段描述如何启动,Install字段描述如何安装该服务。
4. 打开/etc/rc.local输入如下内容

echo "rc.local was executed on $(date)" >> /var/log/rc.local.log

5. 给文件权限

chmod +x /etc/rc.d/rc.local

6. 重启系统

reboot

7. 查看日志是否有输出.有则搞定

cat /var/log/rc.local.log
0 条回应
| 耗时 0.366 秒 | 查询 60 次 | 内存 4.27 MB |
本站CDN由One degree CDN提供