要写一个自启动脚本, 以前用red hat, 公司现在用solaris, 就网上查找了一下solaris的资料,关于solaris的启动,是这样的:
在/etc/的目录里,可以看到rc1.d,rc2.d,rc3.d,rc0.d,rcS.d 和 init.d这些目录,在init.d的目录下放的脚本,会在系统启动时或运行级别改动是,由系统的init进程执行。
在以rc开头的文件夹里放置的脚本都会以K或S开头命名,命名的规则是 [K/S] + [nn] + [scriptname], K表示kill,S表示start, nn表示一个2位数字的序号,scriptname就是脚本的名字。举个例子,当运行级别由2改动到3的时候,系统会按照nn的顺序,以stop参数执行rc3.d下所有K开头的脚本,然后按照nn的顺序,以start参数执行rc3.d下所有S开头的脚本。
初步了解上面的内容后,就写一个简单的例子,用来自启动tomcat, 脚本如下:
#!/bin/sh # #write by zhouxiaobo 11/11/21 TOMCAT_HOME="/opt/apache/apache-tomcat-6.0.10" start(){ echo "Starting Apache Tomcat 6.0.10" su apache -c "$TOMCAT_HOME/bin/startup.sh" echo "Apache Tomcat 6.0.10 already run." } stop(){ echo "Stopping Apache Tomcat 6.0.10" su apache -c "$TOMCAT_HOME/bin/shutdown.sh" echo "Apache Tomcat 6.0.10 already stop." } case "$1" in start) start echo ;; stop) stop echo ;; *) echo $"Usage: $0 {start|stop}" exit 1 esac exit 0
文件命名为tomcatrun,并放在/etc/init.d目录下,执行chmod +x tomcatrun 改变权限。
然后,将该文件link到rc目录下:
ln -s /etc/init.d/tomcatrun /etc/rc0.d/K99tomcatrun
ln -s /etc/init.d/tomcatrun /etc/rc3.d/S99tomcatrun
在rc0级别先关闭,rc3级别再启动。这个脚本只是一个例子,还是很不健壮的,自启动脚本应该写的很健壮,比如上面还有加上,启动失败的处理, 启动时tomcat已经运行的判断等等......