我有一个脚本可以处理屏幕亮度,工作正常,很酷,现在我想让它在从挂起状态唤醒后运行。
所以我尝试使用systemd,我在/etc/systemd/system/myscript.service
下有一个文件如下:
[Unit]
Description=Run myscript after wakeup
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/myscript
User=me
#Environment=DISPLAY=:0
[Install]
WantedBy=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
注意:设置User
是因为myscript需要HOME变量。
在我运行 sudo systemctl enable myscript
并尝试挂起/唤醒后,myscript 没有运行并且 journalctl -u myscript.service
输出以下消息:
1 月 25 日 13:42:53 mymachine myscript[24489]:无法打开显示
1 月 25 日 13:42:53 mymachine systemd[1]:myscript.service:成功。
Jan 25 13:42:53 mymachine systemd[1]:完成唤醒后运行 myscript。
如果我取消注释 myscript.service 中的 #Environment=DISPLAY=:0
行,错误是“无法打开显示:0”
任何帮助都会很棒:^)
答案 0 :(得分:2)
这适用于我的 Arch 系统。我在那个位置测试了一个脚本,在从休眠或挂起 (systemctl hibernate / suspend) 恢复后,xbacklight 会上下波动 75%。
我只能认为您的环境中没有 DISPLAY=:0 用于运行脚本的用户(使用 env 验证)。
答案 1 :(得分:0)
我遇到了类似的问题。通过将以下内容添加到我的 systemd 服务来修复它:
Environment="DISPLAY=<DISP>"
Environment="XAUTHORITY=/path/to/xauthority"
将 <DISP>
替换为 $DISPLAY
变量的值,通常为 :0
。