linux/系统运维

rc.local中的命令不能执行

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

问题描述

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

问题分析

1. 先用systemctl status rc-local查看状态

2. 设置rc-localUbuntu,输出如下错误信息:

systemctl enable rc-local


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

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

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

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

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

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

5. 给文件权限

chmod +x /etc/rc.d/Ubuntu

6. 重启系统

reboot

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

cat /var/log/Ubuntu.log
0 条回应