我只需要在我的 CentOS 机器首次启动时(安装操作系统后)运行一次 bash 脚本,该脚本应该运行前网络服务启动(因为这个脚本会改变网络配置) 如何注册我的脚本在网络服务启动之前运行?
答案1
如果您查看 /etc/init.d/network 的“chkconfig”行,您会看到网络的启动优先级为“10”。
/etc/init.d/yourscript:
#!/bin/bash
#
# yourscript short description
#
# chkconfig: 2345 9 20
# description: long description
case "$1" in
start)
Do your thing !!!
chkconfig yourscript off
;;
stop|status|restart|reload|force-reload)
# do nothing
;;
esac
然后运行chkconfig yourscript on
以使其在启动时运行。chkconfig yourscript off
脚本内部应禁止它在任何后续启动时运行。
CentOS/RHEL/Fedora 的某些版本有一个“firstboot”程序,您可以尝试使用,但这似乎很麻烦。
你确定不能在 kickstart 中的 %post 中运行网络重新配置脚本吗?我就是这么做的。
答案2
简单答案:将其粘贴/etc/init.d
(符号链接到/etc/rc#.d
)并且它所做的第一件事是检查文件是否存在:如果文件存在,则脚本已运行(因此退出)。如果不存在,则运行脚本并触摸文件。
这也允许您删除该文件以强制脚本稍后再次运行。