Установить скрипт на автозапуск при загрузке Linux
Я использовал плагин Maven appassembler для генерации сценариев оболочки Linux вокруг приложения Java Spring "myapp".
Затем я получаю следующую структуру каталогов:
/home/myapp/platform/bin/myapp <== Script that I start manually
Сценарий myapp имеет права "-rwxr-xr-x", а для владельца установлено значение "myapp:myapp", а сценарий настроен для запуска от имени пользователя "myapp" (устанавливается из настроек Maven при сборке).
Теперь из корня я выдал следующую команду:
$ sudo ln -s /home/myapp/platform/bin/myapp /etc/init.d/service_myapp
который создает символическую ссылку с правами "lrwxrwxrwx" и "root:root" как владелец и указывает на мой скрипт myapp. Я подумал, что этого будет достаточно для запуска этого скрипта при запуске. Однако это, кажется, не работает. Если я запускаю его вручную, как:
$ cd /etc/init.d/
$ ./service_myapp
затем мне предлагается ввести пароль перед его выполнением.
Может кто-нибудь объяснить, что здесь происходит и / или что я делаю не так?
Я также попробовал это:
$ cd /etc/init.d/
$ update-rc.d service_myapp defaults 20
но получает это:
update-rc.d: warning: /etc/init.d/service_myapp missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
Adding system startup for /etc/init.d/service_myapp ...
/etc/rc0.d/K20service_myapp -> ../init.d/service_myapp
update-rc.d: symlink: Permission denied
1 ответ
Вам будет предложено ввести пароль, потому что некоторые команды в сценарии требуют root, вероятно.
Кроме того, вы должны быть root при запуске update-rc.d
:
sudo update-rc.d service_myapp defaults 20
Наконец, ваш скрипт должен быть в формате SysV и поддерживать start
, stop
, restart
, force-reload
, а также status
команды.