Startup действительно сбивает меня с толку. Кажется, что разные методы запуска вещей происходят в разных местах по всему миру. Но есть ли способ определить порядок, в котором они загружаются?
В частности... У меня проблема, когда Plex Media Server (PMS) не может быть обнаружен клиентами, если VPN-подключение сервера установлено до запуска PMS. Это сводило меня с ума, но я обнаружил, что могу решить проблему, отключив PMS, отключив VPN, включив PMS, а затем включив VPN.
Я не совсем уверен, как PMS автоматически загружается при запуске, но VPN — это то, что я определил, отредактировав: /etc/network/if-up.d/slickvpn следующим образом:
#! /bin/bash
REQUIRED_CONNECTION_NAME="Wired connection 1"
VPN_CONNECTION_NAME="myvpn"
activ_con=$(nmcli con status | grep "${REQUIRED_CONNECTION_NAME}")
activ_vpn=$(nmcli con status | grep "${VPN_CONNECTION_NAME}")
if [ "${activ_con}" -a ! "${activ_vpn}" ];
then
nmcli con up id "${VPN_CONNECTION_NAME}"
fi
Это скрипт, который я где-то нашел (кажется, на этом сайте), когда искал помощь по автоматическому подключению VPN.
Так что я предполагаю, что скрипты /etc/network/if-up.d/ инициируются до службы PMS. Как мне это перевернуть? Или другое решение?
решение1
Я думаю, что вы можете попробовать upstart. Вы можете остановить запуск VPN-сервера в скриптах ifupdown (переместив файл в другое место), а затем выполнить несколько заданий upstart.
Создайте (или измените, если он уже существует, вам следует поискать в /etc/init
) файл запуска PMS /etc/init
и заполните его (**если он уже существует, просто запомните имя файла .conf
):
# pms - Plex Media Server
description "Plex Media Server"
start on (local-filesystems and net-device-up IFACE!=lo)
## here you can define what interface you can wait, just change IFACE!=lo for IFACE=eth0, etc.
## This stops the job at shutdown
stop on runlevel [!2345]
script
exec /path/to/pms/server/binar
end script
Это очень простой скрипт upstart. Вам нужно добавить/изменить вещи вокруг. Теперь другой скрипт:
Создайте /etc/init/vpn.conf
файл и заполните его следующим содержимым
# vpn - Virtual Private Network server
description "Virtual Private Network server"
start on started plexmediaserver
## now, the VPN server will only start if PMS starts :D
## This stops the job at shutdown you can modify it and make it to stop before stoping PMS
stop on runlevel [!2345]
env REQUIRED_CONNECTION_NAME="Wired connection 1"
env VPN_CONNECTION_NAME="myvpn"
export REQUIRED_CONNECTION_NAME
export VPN_CONNECTION_NAME
script
exec /usr/bin/nmcli con up id "${VPN_CONNECTION_NAME}"
end script
Сделанный.