1、新建一个服务 rc-local.service
sudo vi /etc/systemd/system/rc-local.service
写入以下内容:
[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.targ
Alias=rc-local.serviceet
配置解释
[Unit] 部分
Description=/etc/rc.local Compatibility:描述服务的用途。
ConditionPathExists=/etc/rc.local:只有在 /etc/rc.local 文件存在的情况下,才会启动这个服务。
[Service] 部分
Type=forking:指示服务类型为分叉类型。rc.local 脚本将会启动一个新的进程并立即返回。
ExecStart=/etc/rc.local start:定义启动服务时执行的命令,即执行 /etc/rc.local 脚本。
TimeoutSec=0:设置服务启动超时时间为 0,即不设置超时。
StandardOutput=tty:将服务的标准输出重定向到终端。
RemainAfterExit=yes:指示服务退出后仍然认为它是活跃的。
SysVStartPriority=99:设置服务启动的优先级。
[Install] 部分
WantedBy=multi-user.target:定义服务的目标目标。
Alias=rc-local.service:为服务设置别名。
2、创建/etc/rc.local文件
sudo vim /etc/rc.local
确保脚本内容类似如下:
#!/bin/bash
# 这里可以添加你希望在启动时运行的命令
echo "rc.local 脚本运行中"
exit 0
3、保存并退出编辑器,赋予可执行权限:
sudo chmod +x /etc/rc.local
4、重新加载 systemd 并启动服务
加载 systemd 守护进程:
sudo systemctl daemon-reload
启用并启动服务:
sudo systemctl enable rc-local
sudo systemctl start rc-local
检查服务状态:
systemctl status rc-local.service
状态如下:
root@ubuntu:/etc# systemctl status rc-local.service
● rc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; preset: enabled)
Drop-In: /usr/lib/systemd/system/rc-local.service.d
└─debian.conf
Active: active (exited) since Fri 2024-05-24 21:32:07 CST; 11s ago
Process: 4525 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
CPU: 4ms
May 24 21:32:07 ubuntu systemd[1]: Starting rc-local.service - /etc/rc.local Compatibility...
May 24 21:32:07 ubuntu rc.local[4525]: rc.local 脚本运行中
May 24 21:32:07 ubuntu systemd[1]: Started rc-local.service - /etc/rc.local Compatibility.
通过以上步骤,你应该能够正确配置并启动 rc-local.service。