让sybase在Linux启动时自启动
1.写自启动脚本 start.syb.sh
#!/bin/sh
su - sybase << EOF
./sybase_start.sh
EOF
把这个脚本放到目录 /etc/rc.d/init.d 里
2.切换到sybase 用户,在sybase目录下新建脚本 sybase_start.sh
#!/bin/sh
PrgPID=`ps -ef|grep -w dataserver|grep -v grep|awk '{print $2}'`
if [ "x$PrgPID" != "x" ]; then
echo "sybase is running"
exit
else
echo "now starting sybase"
cd /opt/sybase/sdb/ASE-12_5/install/
./startserver &
fi
这个脚本才是真正的启动sybase的脚本
3.在 /etc/rc.d/目录下有 rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d 这几个目录,rc 后面的数字代表着不同的运行级别,意思就是不同运行级别的自启动程序放在不同的rc目录里。关于运行级别可以在 /etc/inittab文件里查到,比如我的机器是 id:3:initdefault: 表示启动后的系统是多用户的命令模式。为了要让sybase自动,所以我要把脚本start.syb.sh软连接到这个目录下。进入 rc3.d后,执行命令
ln -s /etc/init.d/star_syb.sh ./S100star_syb.sh 这样就可以了。
关于连接名字前为什么要有S100原因如下:
在各个运行级别的子目录中,都建立有到/etc/rc.d/init.d子目录中命令脚本程序的符号链接,但是,这些符号链接并不使用命令脚本程序在 /etc/rc.d/init.d子目录中原来的名字。如果命令脚本程序是用来启动一个服务的,其符号链接的名字就以字母S打头;如果命令脚本程序是用来关闭一个服务的,其符号链接的名字就以字母K打头。
许多情况下,这些命令脚本程序的执行顺序都很重要。如果没有先配置网络接口,就没有办法使用DNS服务解析主机名!为了安排它们的执行顺序,在字母S 或者K的后面紧跟着一个两位数字,数值小的在数值大的前面执行。比如:/etc/rc.d/rc3.d/S50inet就会在 /etc/rc.d/rc3.d/S55named之前执行(S50inet配置网络设置,S55named启动DNS服务器)。
我的机器里S开头的正好表到了99,所以新加的只能是100开始了。
sybase 退出脚本
切换的sybase 用,在sybase目录下编写脚本 sybase_stop.sh,脚本名可以随便取
#!/bin/sh
PrgPID=`ps -ef|grep dataserver|grep -v grep|awk '{print $2}'`
if [ "x$PrgPID" = "x" ]; then
echo "sybase wasn't running"
exit;
fi
echo "PID is : $PrgPID"
isql -Usa -P<<EOF #此处很重要,表名接下来的命令是输在登录后的窗口里
shutdown
go
EOF