【问题标题】:How do I translate init.d scripts from Ubuntu/Debian Linux to Solaris?如何将 init.d 脚本从 Ubuntu/Debian Linux 转换为 Solaris?
【发布时间】:2010-09-22 03:25:15
【问题描述】:

我有几个 init.d 脚本用于启动一些守护进程。我在互联网上找到的大多数这些脚本都使用 start-stop-daemon。我的理解是“start-stop-daemon”是特定于 Linux 或 BSD 发行版的命令,在 Solaris 上不可用。

将我的 init.d 脚本从 Linux 转换为 Solaris 的最佳方法是什么?是否有一个相当于我可以使用的 start-stop-daemon 的命令?

由于我不是 Solaris 用户,我愿意提前承认,我什至不知道我的问题是否本质上是无效的。

【问题讨论】:

    标签: linux shell solaris init.d


    【解决方案1】:

    start-stop-daemon 是 Linux 的东西,在 Solaris 上用的不多。不过,如果您想重用初始化脚本,我想您可以移植该命令。

    否则,这取决于您使用的 Solaris 版本。从 Solaris 10 和 OpenSolaris 开始,它们使用新的启动脚本框架“Solaris 服务管理工具”,您可以使用命令 svcssvccfgsvcadm 对其进行配置。

    更多信息请参见http://www.oracle.com/technetwork/server-storage/solaris/overview/servicemgmthowto-jsp-135655.html

    对于较旧的 Solaris 版本,大多数初始化脚本都是用纯 shell 编写的,没有任何辅助命令,例如 start-stop-daemon。

    【讨论】:

    • 我正在使用 OpenSolaris。感谢您提供的信息,我会查看您发布的链接。
    【解决方案2】:

    建议在 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 为前缀的脚本和脚本的参数 'start' 以 S 为前缀。应用相同的序列没有害处 多个脚本的编号。

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 1970-01-01
      • 2021-06-06
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 2013-01-05
      • 1970-01-01
      相关资源
      最近更新 更多