systemd - 唤醒后 Systemd 运行脚本:“无法打开显示”
问题描述
我有一个脚本可以处理屏幕亮度,工作正常,这很酷,现在我想让它在从挂起唤醒后运行。
所以我尝试使用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:成功。
1 月 25 日 13:42:53 mymachine systemd[1]: Finished Run myscript after wakeup.
如果我取消注释#Environment=DISPLAY=:0
myscript.service 中的行,错误是“无法打开显示:0”
任何帮助都会很棒:^)
解决方案
这适用于我的 Arch 系统。在从休眠或挂起(systemctl hibernate/suspend)恢复后,我在该位置测试了一个脚本,xbacklight 上下波动了 75%。
我只能认为您的环境中没有 DISPLAY=:0 (使用 env 验证)对于您运行脚本的用户。
推荐阅读
- c# - 来自角色的反应 C#
- javascript - 等待图像的格式更改
- c# - 来自 nugets 的跨平台项目和数据类
- javascript - [Vue警告]:
只能用于单个元素。利用 对于列表 - php - openpgp-php 无法解密来自其他客户端的密文
- web-services - 通过 web 服务登录 prestashop 1.7
- python - 在执行当前脚本之前运行 python 脚本
- c# - V5R4 上 iSeries 的 .NET 数据提供程序
- ios - 2 架构 arm64 的重复符号
- apache-kafka - Kafka Streams:处理来自不同分区的消息时的事件时间偏差