如何将Ubuntu / Debian Linux中的init.d脚本翻译成Solaris?
我有几个init.d脚本用于启动一些守护进程。 我在互联网上找到的大多数这些脚本都使用start-stop-daemon。 我的理解是,“start-stop-daemon”是特定于Linux或BSD发行版的命令,并且在Solaris上不可用。
将我的init.d脚本从Linux转换为Solaris的最佳方式是什么? 是否有一个相当于我可以使用的start-stop-daemon的命令?
由于我对Solaris用户不是很了解,所以我愿意承认,我甚至不知道我的问题是否内在无效。
start-stop-daemon是Linux的一个东西,并没有在Solaris上使用太多。 我想你可以移植命令,如果你想重新使用你的init脚本。
否则,它取决于您使用的Solaris版本。 从Solaris 10和OpenSolaris开始,他们使用新的启动脚本框架“Solaris服务管理工具”,您可以使用命令svcs
, svccfg
和svcadm
。
有关更多信息,请参阅http://www.oracle.com/technetwork/server-storage/solaris/overview/servicemgmthowto-jsp-135655.html。
对于较早的Solaris发行版,大多数init脚本都是在纯shell中编写的,没有任何助手命令,如start-stop-daemon。
在Solaris 10或更高版本中,建议使用SMF,但在早期版本中,您需要在/etc/init.d中创建一个init脚本,并从rcX.d目录链接到该脚本。 以下是启动rsync守护程序的init脚本的一个简单示例:
#!/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'。将相同的序列号应用于多个脚本没有任何坏处。
链接地址: http://www.djcxy.com/p/75483.html上一篇: How do I translate init.d scripts from Ubuntu/Debian Linux to Solaris?
下一篇: How do I set up Gtk on Windows for Haskell development?