如何指定启动脚本(CLI)的顺序?

如何指定启动脚本(CLI)的顺序?

启动确实让我很困惑。似乎各种启动方法发生在不同的地方。但是有没有办法定义它们的加载顺序?

具体来说...我遇到了一个问题,如果在 PMS 启动之前建立了服务器的 VPN 连接,客户端将无法发现 Plex Media Server (PMS)。这让我很抓狂,但我发现我可以通过关闭 PMS、关闭 VPN、打开 PMS 然后再打开 VPN 来解决这个问题。

我不太清楚 PMS 如何在启动时自动加载,但我通过编辑 /etc/network/if-up.d/slickvpn 定义了 VPN,内容如下:

#! /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。您可以在 ifupdown 脚本中停止启动 VPN 服务器(将文件移动到其他地方),然后执行一些 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

完毕。

相关内容