相关疑难解决方法(0)

如何在网络关闭之前触发挂起的 systemd 单元?

(库存 Debian 测试又名拉伸 9,所以我有一个常规的 systemd+logind+NetworkManager+GNOME 堆栈)

我有一对要在启动/关闭和恢复/挂起时运行的脚本。此脚本需要在运行时存在网络。我已尝试使用以下脚本进行此操作:

[Unit]
Description=Yamaha Reciever power
Requires=network-online.target
After=network-online.target
Before=sleep.target
Conflicts=sleep.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/av-up
ExecStop=/usr/local/bin/av-down
RemainAfterExit=yes

[Install]
WantedBy=graphical.target
Run Code Online (Sandbox Code Playgroud)

这在启动/关闭时正常工作,但是在挂起期间它网络关闭运行,因此失败。

我已经确定这是因为在 systemd 下挂起是如何进行的:

  1. 挂起由程序(例如systemctl suspend)向 logind 发送 dbus 调用启动。
  2. 然后 Logind 向任何收听的人发送 PrepareToShutdown dbus 信号。
  3. Logind 然后向 systemd 发送一个 StartUnit dbus 调用来运行 suspend.target 单元。

NetworkManager 侦听 PrepareToShutdown,因此在 (2) 处移除网络,而当 systemd 在 (3) 处实际开始挂起时,我的单元会被触发。NetworkManager 使用 logind 保持“禁止”锁定,以确保它在 (3) 之前关闭网络。(旁注:像 systemd 控制挂起/恢复这样的东西似乎很疯狂,只是为了用 logind 来颠覆它,让东西规避这一点)

在网络仍在运行时触发程序在挂起/恢复时运行的正确方法是什么?

我应该使用 NetworkManager pre-down 脚本吗?如果是这样,如果网络出现故障但我没有挂起,我该如何阻止它触发?

有没有办法提前挂入挂起过程?

有没有办法让 …

suspend networkmanager systemd

10
推荐指数
1
解决办法
4312
查看次数

pm-utils:挂起脚本中没有网络?

我想/etc/pm/suspend.d/在允许系统挂起之前放置一个需要网络访问(非常短的时间)的脚本。但是,即使使用名为“001_something”的脚本/etc/pm/suspend.d//usr/lib/pm-utils/sleep.d/我也无法访问任何网络。这似乎在脚本运行之前被禁用。

为什么网络被禁用?我怎样才能启用它?

另外,我无法使用 pm-suspend.log in /var/log。似乎一旦系统恢复,挂起部分的文件就会被覆盖?

在 中观察到以下情况daemon.log

Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> sleep requested (sleeping: no enabled: yes)·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> sleeping or disabling...·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): now unmanaged·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): device state change: activated -> unmanaged (reason 'sleeping') [100 10 37]·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): deactivating device (reason 'sleeping') [37]·
Run Code Online (Sandbox Code Playgroud)

我正在使用带有 Gnome 3 …

linux debian power-management

8
推荐指数
1
解决办法
2036
查看次数