Как мне перевести сценарии init.d из Ubuntu / Debian Linux в 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. Я думаю, вы можете портировать команду, если хотите повторно использовать сценарии инициализации.
В противном случае это зависит от того, какую версию 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. Применение такой же последовательности не повредит. номер для нескольких сценариев.