/etc/rc.d/rc.local linux启动自动开启某些服务(转)
/etc/rc.d/rc.local似乎是很多Linux系统管理员的偏爱,因为凡是需要随系统自动启动的服务、程序等,只要系统没有提供Sys V风格的启动脚本,就把这些需求都塞到/etc/rc.d/rc.local。
当然,绝大部分情况下,你会发现这一切都工作得很正常,看上去也很美好。不过,当你遇到了一些诡异的问题的时候,也许你应该好好的去看看/etc/rc.d/rc.local里都写了什么了?
虽然/etc/rc.d/rc.local 的描述是你可以把你需要的自动启动的程序放到这里,不过那仅仅只是限于没有别的地方可以放置了,或者说系统也没有提供其他办法了,我们才这么干,然而实际上,我碰到的很多/etc/rc.d/rc.local里放置的内容,其实系统提供了更好的处理方式:
1)Oracle等服务器的启动:如果你需要你的oracle可以随着系统一起启动,你可以去看看/etc/oratab这个文件,然后去了解它,你就会发现这里才是它正确的位置所在
2)静态路由: 对于需要增加大量的不是本网段的路由时,很多人喜欢在/etc/rc.d/rc.local里添加类似
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.224.0.251
route add -host 192.168.100.1 gw 10.224.0.251
这样的语句,实际上,系统也提供了它正确放置的位置,只不过这个文件默认不会存在,你之需要看看/etc/init.d/network这个脚本就知道了,它除了会把网卡带起来以外,还会去检查是否存在/etc/sysconfig/static-routes文件,如果有,则添加这些文件里记录的静态路由,其格式很简单,比如上面的两条语句换成static-routes要求的格式就是:
any -net 192.168.1.0 netmask 255.255.255.0 gw 10.224.0.254
any -host 192.168.100.1 gw 10.244.0.254
3)修改设备权限信息:对于有udev功能的核心来说,修改设备的属性,权限等,应该去找对应rules文件,在那些文件里去做对应的修改。
4 ) 其他需要运行的程序:还是自己写一个简单的符合LSB标准的启动脚本吧,这样系统能够帮你正确的启动并且正确的停止改服务,特别是正确的停止服务,而不是由系统简单发出kill -9 的方式。
上述这样的做法,其主要的目的就是要能够让服务按照正确的顺序依照正确的方式启动和停止,这样能够给你消除一些隐藏的问题。
当然,如果你系统一直都是正常工作的,而且/etc/rc.d/rc.local也又大量的脚本行,那也许你还不能体会我为什么要说上面这些话了。