在 Solaris 10 或更高版本上建议使用 SMF,但在较早的版本中,您将在 /etc/init.d 中创建一个初始化脚本并从 rcX.d 目录链接到它。这是用于启动 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 目录中的 README 并查看 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”,为以 S 为前缀的脚本传递参数“start”。将相同的序列号应用于多个脚本没有害处。