У меня есть файл юнита systemd, который запускает два совершенно отдельных процесса, apache и tomcat (и прежде чем вы прокомментируете это, я знаю, что мне просто нужно создать два отдельных файла юнита, но разрешения на этом сервере жестко заблокированы). При запуске службы через сеанс SSH все запускается и останавливается просто отлично. Однако, когда сервер перезагружается, только apache запускается снова, а systemd утверждает, что все в порядке. Когда я проверяю логи tomcat, он, похоже, запустился, но процесс просто умирает в какой-то момент.
Что может быть причиной этой разницы в поведении? Должен ли этот сервис ждать чего-то еще перед запуском?
Файл блока:
[Unit]
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/home/opiusr/appstart.sh
ExecStop=/home/opiusr/appstop.sh
[Install]
WantedBy=multi-user.target
Оба скрипта представляют собой оболочки, содержащие что-то вроде этого:
/bin/su - opiusr -c "/home/opiusr/bin/start_tomcat -s" >> $LOG_FILE
/bin/su - opiusr -c "/home/opiusr/bin/start_apache -s" >> $LOG_FILE
И эти скрипты просто оборачивали скрипты запуска и остановки tomcat и apache, добавляя некоторые дополнительные протоколы.
EDIT: Я видел этот ответ, который очень похож: Systemd завершает работу службы сразу после запуска
Мне интересно, могу ли я сделать что-то еще, учитывая, что система довольно заблокирована. У меня есть полный доступ на редактирование файла юнита и двух скриптов, но нет возможности создавать новые службы или трогать системные каталоги.