Как указать порядок запуска скриптов (CLI)?

Как указать порядок запуска скриптов (CLI)?

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

Сделанный.

Связанный контент