Как мне перевести сценарии init.d из Ubuntu / Debian Linux в Solaris?

StackOverflow https://stackoverflow.com/questions/286570

  •  08-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

См. http://www.oracle.com/technetwork/ серверное хранилище / Solaris / обзор / servicemgmthowto-jsp-135655.html для получения дополнительной информации.

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

Другие советы

В 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: 
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»). <*>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top