我有几个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: 
ln rsync /etc/rc3.d/S91rsync
for i in `ls -1d /etc/rc*.d | grep -v 3`; do ln rsync $i/K02rsync; done
{ start | stop | restart }" exit 1 ;; esac

从每个rcX.d目录创建一个指向脚本的链接(遵循“S" /" K"约定”)。

<*>

请参阅每个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]   脚本通过一个单一的论点。它传递参数'stop'   对于以K为前缀的脚本和脚本的参数“start”   以S为前缀。应用相同的序列没有任何害处   编号到多个脚本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top