我正在尝试运行一个脚本,在关闭时将目录从一个 Linux 盒子同步到另一个。我以为我可以正常工作,但我所有的测试都是在通过有线连接连接的盒子上进行的。
当我在笔记本电脑上尝试时,它失败了。我创建了一个调试脚本,将 ip 的状态回显到文件中,并在服务中运行它,它显示运营商正在从无线接口中删除,但不是从有线接口中删除,因此它通过有线工作没有问题,但通过 wifi 则失败。
我希望它能够通过无线方式工作,这是我在笔记本电脑上使用的设置,并且我配置了有线和无线接口。
我已经使用 systemd-analyze 图来确保 prepowoff 服务在启动后期运行,因此根据我所读到的内容,关闭应该在关闭序列的早期发生。
这是文件和调试信息。
prepowoff.service(在 /etc/systemd/system 中)
[Unit]
After=multi-user.target
Before=shutdown.service reboot.service halt.service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/root/bin/debug
[Install]
WantedBy=multi-user.target
调试脚本(在/root/bin 中)
#!/bin/bash
DATE=$(/bin/date +"%D - %T - %N")
WLAN0_STATE=$(/sbin/ip a show wlan0)
ETH0_STATE=$(/sbin/ip a show eth0)
LOGFILE=/root/bin/log.txt
SLEEP=/bin/sleep
echo "++++++ START ++++++" > ${LOGFILE}
echo ${DATE} >> ${LOGFILE}
echo "--------------------" >> ${LOGFILE}
echo ${ETH0_STATE} >> ${LOGFILE}
echo "--------------------" >> ${LOGFILE}
echo ${WLAN0_STATE} >> ${LOGFILE}
echo "+++++ END ++++++++" >> ${LOGFILE}
这是调试脚本的输出,当我启动后运行它时,IP 信息被删除,但您可以看到状态。
++++++ START ++++++
01/16/16 - 16:50:47 - 145920573
--------------------
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
--------------------
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
+++++ END ++++++++
这是重新启动后的输出,显示有线接口已打开,无线接口已关闭。
++++++ START ++++++
01/16/16 - 16:51:10 - 424001117
--------------------
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
--------------------
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN
+++++ END ++++++++
我已经尝试了各种启用 NetworkManager-wait-online.service 并继续执行的操作,但仅启用该服务就开始导致错误。我不明白为什么运营商会使用 wifi,因为理论上 prepowoff 服务的关闭应该先于其他事情发生。
任何帮助将不胜感激。
谢谢。
答案1
我设法让它与这个服务文件一起工作。
[Unit]
After=wpa_supplicant.service dbus.service NetworkManager.service
Requires=wpa_supplicant.service dbus.service NetworkManager.service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/root/bin/prepowoff
[Install]
WantedBy=multi-user.target
即使网络管理器仍在运行,wpa 请求者和 dbus 仍会关闭无线卡。