Как мне перевести сценарии init.d из Ubuntu / Debian Linux в Solaris? - PullRequest
4 голосов
/ 13 ноября 2008

У меня есть несколько скриптов init.d, которые я использую для запуска некоторых демонов. Большинство этих скриптов я нашел в интернете, и все они используют start-stop-daemon. Насколько я понимаю, «start-stop-daemon» - это команда, специфичная для дистрибутивов Linux или BSD и недоступная в Solaris.

Как лучше всего перевести мои скрипты init.d из Linux в Solaris? Есть ли примерно такая команда, эквивалентная start-stop-daemon, которую я могу использовать?

Поскольку я не большой пользователь Solaris, я готов признать, что даже не знаю, является ли мой вопрос недействительным или нет.

Ответы [ 2 ]

5 голосов
/ 13 ноября 2008

start-stop-daemon - вещь Linux, и она не так часто используется в Solaris. Я думаю, вы можете портировать команду, если хотите повторно использовать сценарии инициализации.

В противном случае это зависит от того, какую версию Solaris вы используете. Начиная с Solaris 10 и OpenSolaris, они используют новую среду сценариев запуска «Средство управления службами Solaris», которую вы настраиваете с помощью команд svcs, svccfg и svcadm.

.

См. http://www.oracle.com/technetwork/server-storage/solaris/overview/servicemgmthowto-jsp-135655.html для получения дополнительной информации.

Для более старых выпусков Solaris большинство сценариев инициализации написаны в чистой оболочке без каких-либо вспомогательных команд, таких как start-stop-daemon.

4 голосов
/ 23 марта 2009

В 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

См. README в каждом каталоге rcX.d и проверьте man-страницу для 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. Применение такой же последовательности не повредит. номер для нескольких сценариев.

...