linux - Wifi 在 init.d 脚本运行前断开连接

标签 linux bash amazon-s3 init.d

我设置了一个简单的 init.d 脚本“S3logrotate”以在关机时运行。 “S3logrotate”脚本在从命令行手动运行时工作正常,但脚本在关闭时无法正常运行。

脚本将日志从我的 PC 上传到 Amazon S3 存储桶并需要 wifi 才能正常运行。

调试证明脚本确实运行了,但是上传过程失败。

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

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

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

这个 block 的输出是:

IPv4 is down
The network is down

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

我使用 Ubuntu 16.04,如果重要的话,我会使用 Windows 10 双启动。

谢谢,

sganesan7

最佳答案

你应该把你的票据放在:

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

将组和所有者更改为 root

chown root:root S3logrotate

它应该可以工作。如果您需要为单独的界面放置脚本执行此操作

在里面创建一个脚本

/etc/NetworkManager/dispatcher.d/

并命名(例如):

 wlan0-down  

应该也可以。

关于linux - Wifi 在 init.d 脚本运行前断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40775416/

相关文章:

python - 脚本执行时间[编辑]

bash - 打印由除空格以外的定界符分隔的函数参数

c++ - 如何在 C++ 中隐藏我的 AWS S3 访问 key 和 secret ?

ruby-on-rails - 使用 Activeadmin + Paperclip Rails 直接上传到 Amazon S3

java - 使用 Java lambda 读取 aws s3 上的文件

linux - 带有 smartctl 的 Bash 脚本不起作用

java - Raspberry Pi 上的 Jave 段错误

linux - 如果我提供的搜索词太长,为什么 pgrep 找不到我的进程?

Python mmap.move()

bash - 使用双符号链接(symbolic link) Bash 命令 - 意外行为