如何将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服务管理工具”,您可以使用命令svcssvccfgsvcadm

有关更多信息,请参阅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?