Gih's Blog

只言片语

How to delay start a daemon ?

2011-06-22 by gihnius, tagged as freebsd

默认情况下很多系统服务都是在开机过程完成启动的, 但有时我希望一些服务在开机后过一段时间再启动. 在FreeBSD, AIX, Linux都可以通过简单的脚本实现, 不过要注意,有些服务会提供全局的环境变量或者成为其它服务进程的依赖时不能这么做!

以我的笔记本为例, 因为经常会在不同的地方上网, 所以我取消了系统开机自动配置网络,在开机后自己再执行相应的脚本连网. 有些服务比如 ntp(时间同步), pf(防火墙), stunnel, privoxy等等, 我都 delay start了. 方法是在/etc/rc.local里添加:

## rc.local
(sleep 600; service ntpdate onestart) &
(sleep 660; service ntpd onestart) &
(sleep 120; /path/to/other_scripts) &
... 
像ntpdate, 如果在开机时运行, 没有网络就不能校正时间了.我觉得这样还是有好处的, 还可以缩短开机时间.