让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