Как выполнить сценарий оболочки на запуске?

Я создал сценарий для запуска сервера (мой первый вопрос). Теперь я хочу, чтобы это работало на начальной загрузке системы и запустило определенный сервер. Что я должен сделать, чтобы сделать это?

Мои результаты говорят мне, вставил этот файл /etc/init.d местоположение, и это выполнится, когда система загрузится. Но я не могу понять, как первый аргумент на запуске будет start? Предопределенный где-нибудь для использования start как $1? Если я хочу иметь случай startall это запустит все серверы в сценарии, затем каковы опции, которыми я могу управлять?

Мой сценарий похож на это:

#!/bin/bash

case "$1" in
start)
     start
    ;;
stop)
    stop
    ;;

restart)
    $0 stop
    $0 start
    ;;
*)
    echo "usage: $0 (start|stop|restart)"
;;
esac
13
задан 29.05.2014, 14:21

2 ответа

/etc/init.d каталог сценария, в котором появляются исполняемые сценарии. Однако для запущения скриптов в особом порядке после того, как система запускается, необходимо добавить файлы к /etc/rc#.d каталог. Записи, которые появляются здесь, говорят Вашу систему в какой порядок и в какой сценарии уровня выполнения в /etc/init.d должен быть выполнен. Число после дистанционного управления указывает на то, какой уровень выполнения машина выполняет в, согласно этой диаграмме:

http://en.wikipedia.org/wiki/Runlevel

Таким образом, если Вы имеете:

/etc/init.d/importantscript

Затем Вам нужны (пустые) файлы:

/etc/rc.d/rc3.d/S20importantscript
/etc/rc.d/rc6.d/K20importantscript

Средства S запускаются, и средства K уничтожают. Когда Ваша машина запустится, система скажет "А-ч, я работаю в RunLevel 3, давайте появимся к rc3.d для наблюдения, какие скрипты в '/etc/init.d' должны быть запущены и в какой порядок". В этом случае система отсортирует по 'S' и затем числу после 'S' и выполнится, '/etc/init.d/importantscript запускаются'. Эти 20 только для упорядочивания целей... Ваш сценарий будет работать позади 'S19' и перед 'S21'. Можно создать эти файлы просто путем выполнения:

sudo touch /etc/rc.d/rc3.d/S20importantscript

Вот хорошая сводка также: http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts

19
ответ дан 07.12.2019, 11:30

1$ является параметром командной строки, который передается Вашему сценарию, это - один из запуска, остановите или перезапустите. В openSUSE я не помню иметь опцию передать другие аргументы в сценарий, когда useing runlevel штука редактора, таким образом, я думаю, что это, вероятно, единственные, которые необходимо использовать.

Я не использую CentOS сам, но кажется, что программа для управления, что запускается, в котором runlevel является ntsysv.

0
ответ дан 07.12.2019, 11:30

Теги

Похожие вопросы