在SuSE中设置rc.local

SuSE 12

SuSE 12使用了systemd,默认不再支持 /etc/rc.local 这样的启动脚本。需要通过Unit配置来定制一个类似after.local这样的启动脚本。

  • 创建after-local.service服务配置

注意:这里将systemd配置文件存放在 /usr/lib/systemd/system/ 目录下,你的发行版可能会存放在 /lib/systemd/system/

cat << EOF > /usr/lib/systemd/system/after-local.service
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
[Unit]
Description=/etc/init.d/after.local Compatibility
ConditionFileIsExecutable=/etc/init.d/after.local
[Service]
Type=oneshot
ExecStart=/etc/init.d/after.local
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
EOF
  • 激活 after-local.service 服务:

sudo systemctl enable /usr/lib/systemd/system/after-local.service
  • 然后配置启动脚本 /etc/init.d/after.local

cat << EOF > /etc/init.d/after.local
#!/bin/bash
/opt/bin/my_boot_script.sh run
touch /var/lock/subsys/local
EOF
chmod 755 /etc/init.d/after.local

SuSE 10/11

在SuSE 10/11 上,可以使用 /etc/init.d/boot.local 配置来实现启动时执行必要脚本。不过,这个boot.local中执行的程序是在进入第一个run level之前执行的,所以如果运行脚本依赖网络或者其他设备就绪,可能会运行失败。

可以尝试在 /etc/init.d/after.local/etc/init.d/before.local 添加运行脚本,具体请仔细检查 /etc/rc.d/rc 中调用 /etc/inittab 的脚本,我没有实践。

参考

Last updated