systemd初始化系统(现代Debain系)
此处以固定ip为例,需先在/etc/systemd/system/目录下创建对应的服务:
sudo vi /etc/systemd/system/set-static-ip.service
写入内容
[Unit]
Description=Set static IP for eno1
After=network-pre.target
Before=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/sh -c "/usr/bin/ip link set eno1 up || true"
ExecStart=/usr/bin/sh -c "/usr/bin/ip addr flush dev eno1 || true"
ExecStart=/usr/bin/sh -c "/usr/bin/ip addr add 192.168.56.2/24 dev eno1 || true"
[Install]
WantedBy=multi-user.target
完成后执行
sudo systemctl daemon-reload
来重新加载服务配置到内存,system.d默认扫描路径如下:
/etc/systemd/system/,/lib/systemd/system/,/usr/lib/systemd/system/
加载完我们新建的服务后即可启动我们创建的服务:
sudo systemctl enable set-static-ip.service
此时会输出:
Created symlink /etc/systemd/system/multi-user.target.wants/set-static-ip.service → /etc/systemd/system/set-static-ip.service.
说明服务已经被成功添加到自启动,此时如果要立刻运行服务,使用指令:
sudo systemctl start set-static-ip.service
如果要立刻关闭服务,使用指令:
sudo systemctl stop set-static-ip.service
如果要删除自启动服务,使用指令:
sudo systemctl disable set-static-ip.service
BusyBox init初始化系统(Buildroot / Yocto)
此处以启动自定义脚本/usr/bin/myscript.sh为例,需先在/etc/init.d目录下创建对应的脚本:
cd /etc/init.d
vi S99myscript
写入内容:
#!/bin/sh
# Start my custom script
case "$1" in
start)
/usr/bin/myscript.sh &
;;
stop)
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
赋予可执行性权限
chmod +x S99myscript
chmod +x /usr/bin/myscript.sh
Tips:
- 文件名
S99myscript中的数字99表示启动顺序,越大越晚启动 - 可以保证脚本在网络或其他服务启动后运行
- BusyBox init 会按
/etc/inittab中配置调用/etc/init.d脚本 - 如果需要立即执行,可以手动调用:
/etc/init.d/S99myscript start