建议在Solaris 10或更高版本中使用SMF,但在早期版本中,您需要在/etc/init.d中创建一个init脚本,并从rcX.d目录链接到该脚本。下面是一个init脚本用于启动rsync进程一个最基本的例子:
#!/sbin/sh
startcmd() {
/usr/local/bin/rsync --daemon # REPLACE WITH YOUR COMMANDS
}
stopcmd() {
pkill -f "/usr/local/bin/rsync --daemon" # REPLACE WITH YOUR COMMANDS
}
case "$1" in
'start')
startcmd
;;
'stop')
stopcmd
;;
'restart')
stopcmd
sleep 1
startcmd
;;
*)
echo "Usage: $0 { start | stop | restart }"
exit 1
;;
esac
创建一个链接到每个rcX.d目录的脚本(继“S” /“K”惯例)。
ln rsync /etc/rc3.d/S91rsync
for i in `ls -1d /etc/rc*.d | grep -v 3`; do ln rsync $i/K02rsync; done
请参阅每个rcX.d目录中的自述文件,并检查init.d的手册页。这是一个有点手册页的:
在RC文件名.D目录的形式为 [SK] nn,其中S表示启动这项工作的,K表示 杀死这个作业,nn是用于查杀的相对序列号或开始工作的 。
当进入一个状态(init S,0,2,3等)时,rc [S0-6]脚本 在/etc/rc[S0-6].d中执行前缀为K 后跟那些以S开头的脚本。在/ etc/rc [S0-6]目录之一中执行每个 脚本时,/ sbin/rc [S0-6] 脚本会传递一个参数。对于前缀为K的脚本,参数'stop' 传递参数'start',前缀为S的脚本 的参数'start'。将相同序列 编号应用于多个脚本没有任何坏处。
我正在使用OpenSolaris。感谢您的信息,我会检查您发布的链接。 – 2008-11-13 09:54:28