使用 rc.local 文件 (不推荐)
为什么不推荐使用rc.local 1
系统管理员有时会向启动序列添加本地有用的命令。 这些添加可能旨在启动或运行不属于标准 systemd 启动的本地进程。 可以添加一个新的 systemd 服务单元来启动启动时所需的每个程序,但是旧的 rc.local 方法为任何和所有本地启动需求提供了一个可执行文件
rc.local 没有日志可以查看
- 修改
/lib/systemd/system/rc-local.service
脚本
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
2. 创建/etc/rc.local
文件夹,并添加可执行权限
mkdir /etc/rc.local
chmod +x /etc/rc.local
自启动脚本放到这个文件夹里面
2. 创建/etc/rc.local文件,并添加可执行权限,需要自启动的脚本写到这个文件里面
touch /etc/rc.local
chmod 777 /etc/rc.local
echo "echo 'hello world'" > /etc/rc.local
- 在
/etc/systemed/system
目录下创建软链接
ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/
systemd
默认会读取/etc/systemd/system
下的配置文件
注意事项
- 如果你的脚本中包含bash或者是可执行程序,一定要在末尾加上&,否则重启系统时会卡在启动界面进不去。
- 启动服务并检查服务状态
systemctl enable rc-local
systemctl start rc-local.service
systemctl status rc-local.service
使用Systemd service1
- 创建可执行文件
在/usr/local/bin目录下创建一个可执行文件,当然也可以在其他目录下创建文件。而这个目录的好处有,他包含在系统的环境变量里面。
cd /usr/local/bin
vim mystartup.sh
chmod 777 mystartup.sh
mystartup.sh
#!/bin/bash
################################################################################
# mystartup.sh
#
# This shell program is for testing a startup like rc.local using systemd.
# By David Both
# Licensed under GPL V2
#
################################################################################
# This program should be placed in /usr/local/bin
################################################################################
# This is a test entry
echo `date +%F" "%T` "Startup worked" >> /root/mystartup.log
- 创建systemd service
在/usr/local/lib/systemd/system/目录下创建mystartup.service 文件
cd /usr/local/lib/systemd/system/
# 如果没有这个目录就创建 mkdir -p /usr/local/lib/systemd/system/
vim mystartup.service
mystartup.service
################################################################################
# mystartup.service
#
# This service unit is for testing my systemd startup service
# By David Both
# Licensed under GPL V2
#
################################################################################
# This program should be placed in /usr/local/lib/systemd/system/.
# Create a symlink to it from the /etc/systemd/system directory.
################################################################################
[Unit]
Description=Runs /usr/local/bin/mystartup.sh
[Service]
ExecStart=/usr/local/bin/mystartup.sh
[Install]
WantedBy=multi-user.target
- 创建软链接
cd /etc/systemd/system
ln -s /usr/local/lib/systemd/system/mystartup.service
- 测试服务单元
systemctl status mystartup.service
systemctl start mystartup.service
systemctl enable mystartup.service