2016-11-23 35 views
0

我已经设置了一个简单的init.d脚本“S3logrotate”,以便在关闭时运行。从命令行手动运行时,“S3logrotate”脚本可以正常工作,但脚本在关闭时无法正常工作。在init.d脚本运行之前Wifi断开连接

该脚本将我的PC上的日志上传到Amazon S3存储桶,并要求WiFi正常运行。

调试证明脚本实际运行但上载过程失败。

我发现问题似乎是脚本似乎在wifi终止后运行。

这些是我用来在脚本中测试我的互联网连接的块。

if ping -q -c 1 -W 1 8.8.8.8 >/dev/null; then 
    echo "IPv4 is up" >> *x.txt* 
else 
    echo "IPv4 is down" >> *x.txt* 
fi 

if ping -q -c 1 -W 1 google.com >/dev/null; then 
    echo "The network is up" >> *x.txt* 
else 
    echo "The network is down" >> *x.txt* 
fi 

输出此块:

IPv4 is down 
The network is down 

有什么办法来设置的init.d脚本的优先级?如在,我可以让我的脚本在网络连接终止之前运行吗?如果没有,是否有任何替代init.d?

我使用的是Ubuntu 16.04,如果它有重要意义的话,可以用Windows 10启动双启动。

感谢,

sganesan7

+0

这个Q不是针对StackOverflow定义的编程。它可能更适合于S.E.相关网站http://askubuntu.com或http://superuser.com。使用Q底部的'flag'链接并请主持人移动它。请不要在2个不同的网站上发布相同的Q.在此处发布更多Q​​值之前,请阅读http://stackoverflow.com/help/how-to-ask http://stackoverflow.com/help/dont-ask和http://stackoverflow.com/help/mcve。祝你好运。 – shellter

+0

'/ etc/rc6.d'中的链接应该有一个数字前缀,比如'K01'。脚本按数字顺序运行,所以应该给它一个比终止网络连接的脚本更小的数字。 – Barmar

回答

0

你应该把你的纸条:

/etc/NetworkManager/dispatcher.d/pre-down.d 

变化组和所有者根

chown root:root S3logrotate 

,它应该工作。如果您需要在

做到这一点对于单独的接口处里面的脚本

/etc/NetworkManager/dispatcher.d/ 

创建一个脚本,并将其命名为(例如):

wlan0-down 

,应该工作了。