Я пытаюсь понять процесс инициализации .
У меня есть скрипт, который запускает 3 фоновых процесса (2 скрипта оболочки и приложение Java). Он отлично работает из командной строки.
Я хотел бы выполнить этот скрипт при запуске.
/etc/init.d/skeleton
не имеет смысла для меня, потому что он искал один процесс, который казался. И большинство сценариев инициализации кажется настолько сложным, что я теряюсь.
Все, что я действительно хочу сделать, это:
#!/bin/bash
/opt/myapp/bin/my_start_script
Если бы это только случилось при запуске, я был бы очень счастлив.
Вы можете добавить свою ссылку в приложение Startup Applications в Ubuntu, если хотите использовать графический интерфейс. Недостатком этого является то, что он будет выполняться только при входе в GUI (т. Е. Не для других пользователей и не при входе в среду Ubuntu Desktop).
Используя командную строку, вы можете запустить скрипт до загрузки Ubuntu Desktop.
Для этого сделайте ваш скрипт исполняемым, скопируйте его в /etc/init.d
и создайте символическую ссылку на скрипт в /etc/rc2.d
, если вы хотите, чтобы он выполнялся на многопользовательском уровне запуска по умолчанию (уровень запуска 2). Вам следует переименовать его с помощью буквы S, за которой следует порядок, в котором вы хотите его выполнить, в соответствии с другими ссылками там.
Сделать исполняемый скрипт:
sudo chmod u+x myscript.sh
Скопировать его в /etc/init.d
:
sudo cp myscript /etc/init.d
Создать символическую ссылку в rc2.d:
cd /etc/rc2.d
sudo ln -s /etc/init.d/myscript.sh
Переименуйте его в соответствии со схемой именования:
sudo mv myscript.sh S70myscript.sh
Для получения дополнительной информации см. Файлы README в /etc/init.d
и /etc/rc2.d
.
Использование Upstart в качестве сценариев инициализации System V устарело и стало проще.
Просто поместите этот файл my_script.conf в / etc / init
# Start when pc starts up
start on runlevel [2345]
# Stop when pc shuts down
stop on runlevel [016]
# Start Script
exec my_start_script
# Stop Script
pre-stop my_stop_script
Pre Stop будет содержать сценарий, содержащий код для уничтожения вашего 3-го процесса, и является необязательным, когда служба останавливается sigterm быть отправлено процессу my_start_script, но в зависимости от вашего скрипта он может уже завершиться.
Вы можете проверить свой новый сервис, запустив sudo service my_script start
и sudo service my_script stop