Update-rc.d自定义脚本运行得太晚,也在关机时运行

时间:2014-06-26 15:07:35

标签: debian raspberry-pi

当我的无头Raspberry Pi(运行Debian Wheezy)启动时,我有一个脚本向我发送推送通知。我也将它设置为在启动时连接到OpenVPN。

问题1:问题是它在建立OpenVPN连接之前发送此通知。所以我收到了WAN IP,而不是我们的安全VPN IP。

问题2:系统关闭时会运行推送通知。因此,当它关闭时,我得到相同的PO通知:嘿,我在线!我的IP是:X.X.X.X

我认为问题与update-rc.d

有关

我在/etc/init.d /

中创建了我的pushover脚本

我做了chmod +x

我跑了:

update-rc.d myscript defaults 02 98

重新启动,然后,PO首先发送,VPN连接第二。

所以我也尝试了反过来:

update-rc.d myscript defaults 98 02

重新启动,然后,PO首先发送,VPN连接第二。

所以我尝试在我的脚本中添加sleep 15,但问题仍然存在。

如何首先进行OpenVPN连接,然后再发送通知? 如何在系统关闭时不运行此脚本?

这是我的剧本:

#!/bin/bash
sleep 30

WANIP=$(curl ident.me; echo)
echo "$WANIP"
curl -s \
-F "token=MYTOKENGOESHERE" \
-F "user=MYTOKENGOESHERETOO" \
-F "message=is online and connected. ${WANIP} is my IP." \
https://api.pushover.net/1/messages.json

1 个答案:

答案 0 :(得分:0)

update-rc应用程序只是在rc.X文件夹中创建一个符号链接,其中X将根据脚本运行时的必要性而变化。当您使用默认选项时,将在所有文件夹中创建链接,从而导致脚本在操作系统的已定义状态的每个状态下运行。

一种解决方案是仅在与您要触发的事件对应的文件夹内手动创建链接。可以在此处找到应创建链接的相应文件夹:

http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts

另一个快速解决方案是使用默认配置,然后从rc.0文件夹中删除符号链接,根据上面的文章,该文件夹带有指向暂停操作系统时要执行的脚本的链接。