Как я могу создать скрипт запуска, который запускает различные Rails-необходимые программы?

Когда я запускаю свою виртуальную машину Ubuntu 12.04 vmware, я открываю терминал и запускаю следующие команды.

sudo /etc/init.d/postgresql start 
sudo /etc/init.d/apache2 start
cd sites/name_of_rails_app
bundle exec rake sunspot:solr:start
bundle exec rake sunspot:solr:start RAILS_ENV=test
rails s

И сервер rails запускается в этом окне терминала.

Есть ли способ автоматизировать весь или большую часть этого процесса? Может быть, все, кроме rails s в терминале?

Я смотрел на Startup Applications, и моя команда postgresql (включая sudo) уже там, но мне все еще нужно вручную запустить сервер postgresql , поэтому я не уверен, как / если этот инструмент работает.

Спасибо!

2
задан 30 September 2012 в 20:36

2 ответа

Создайте свой собственный файл сценария оболочки и вставьте свой код запуска (который вы всегда пишете на терминале) в исходный код файла сценария оболочки:

#!/bin/sh
sudo /etc/init.d/postgresql start 
sudo /etc/init.d/apache2 start
cd sites/name_of_rails_app
bundle exec rake sunspot:solr:start
bundle exec rake sunspot:solr:start RAILS_ENV=test
rails s

А затем поместите этот сценарий оболочки куда-нибудь и добавьте его путь к файлу на ваш $PATH. А затем откройте свой терминал, напишите имя файла вашего скрипта и нажмите ENTER.

0
ответ дан 30 September 2012 в 20:36

Я не очень хорош в таких вещах, но вот несколько идей о том, с чего начать.

Большая часть этого, вероятно, излишня для вашей ситуации, поэтому сконцентрируйтесь на предложениях № 2 и № 4. Это особенно важно, если вам нужно, чтобы что-то работало на переднем плане, потому что у двух других предложений нет связанного переднего плана.

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

1) При загрузке Linux запускается один или несколько уровней запуска. (Какой уровень выполнения отличается от дистрибутива до дистрибутива.) Каждый уровень запуска имеет набор сценариев, которые выполняются при запуске уровня запуска. Сами скрипты живут в /etc/init.d. Каждый уровень выполнения имеет каталог /etc/rcx.d, где x - это уровень выполнения 0–6. Я думаю, что 3 предназначен для нормальной работы, но вам придется проверить.

В каждом из этих каталогов вы помещаете символические ссылки на свои скрипты, которые находятся в /etc/init.d, и называете их, начиная с двухзначного префикса. Когда начинается уровень выполнения, все сценарии в его каталоге выполняются в порядке по номерам префиксов, чтобы все происходило предсказуемым, упорядоченным образом. Добавьте ссылку (с префиксом большого числа, чтобы она выполнялась после всего остального, что уже есть) к вашему сценарию в rc3.d (или любой другой подходящий уровень запуска для вашей системы).

Если вы хотите пофантазировать, в файле /etc/init.d есть файл skeleton, в котором немного рассказывается обо всех доступных наворотах. Например. Вы можете написать свой сценарий в виде большого оператора case со случаем START, STOP и т. Д. И создать символическую ссылку на соответствующих уровнях выполнения, чтобы запустить вашу программу, а затем закрыть ее при завершении работы системы. Если вы сделаете это, символическая ссылка, которую вы добавляете к уровням запуска выключения, должна иметь низкий числовой префикс, чтобы она выполнялась до того, как все остальное, что может понадобиться, было закрыто.

Посмотрите на ноты PATH в скелете. Пути, доступные вам во время изменений уровня выполнения, очень ограничены, поэтому у вас нет доступа ко всему.

Если вы пойдете по этому пути, сделайте резервные копии и подготовьте live CD и т. Д. На случай, если вы сделаете что-то, что нарушит последовательность загрузки.

2) Когда bash запускается на вашем пользователе (обычно, один раз за сеанс), он запускает ~ / .profile, который сам по себе является сценарием bash, который может запускать все, что вы хотите для вашего конкретного пользователя.

Когда запускается отдельная оболочка bash (может происходить много раз за сеанс), также выполняется другой скрипт ~ / .bashrc. Вы можете запустить свой скрипт из любого из них по мере необходимости. Это намного ближе к тому, что вы обычно делаете в терминале, так что это намного проще и безопаснее.

Так как все работает таким образом, связано с вашим пользователем, оно прекратится, когда вы выйдете из системы, если вы не сделаете специальные вещи, такие как использование nohup в своих скриптах.

3) Вы можете хранить свой скрипт где-нибудь в системной области, например / usr / bin или / usr / local / bin, и настроить cron для его запуска, добавив запись в системный crontab или в пользовательский crontab.

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

Если вы используете ноутбук или другую систему, которая часто отключается, убедитесь, что anacron установлен и работает. Вскоре после загрузки он (слишком упрощенно) просматривает действия cron, чтобы увидеть, были ли они пропущены, когда система выключена, и запускает их. Как правило, планирование запуска вещей вскоре после полуночи упрощает процесс, поэтому менее вероятно, что что-то будет запущено дважды в один и тот же день.

4) Если вы используете рабочий стол с графическим интерфейсом, такой как kde или gnome, у них есть утилиты запуска скриптов, которые будут работать для вас. kde помещает их в $ HOME / .kde / Autostart. Вы можете поместить свой сценарий там.

Применяются те же соображения, которые были отмечены в предложении № 2.

0
ответ дан 30 September 2012 в 20:36

Другие вопросы по тегам:

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