[other] 统信系统定时脚本执行时缺少X11$DISPLAY,手动执行不报错,求助~
Tofloor
poster avatar
LSY
deepin
2023-02-01 18:28
Author

求助!谢谢各位老师~!统信UOS linux系统

因最近想要实现通过定时执行脚本,修改熄屏时间的功能(原本需在图形界面系统设置中手动修改)遇到以下疑问:

查到可通过命令gsettings set com.deepin.dde.power line-power-lock-delay 0来执行修改,可针对当前用户成功设置。

于是将其写为脚本,该脚本在图形界面登录A用户,终端命令行中sh执行时,可以生效

在init3的tty2命令行界面登录B用户,也可以针对B用户手动执行成功。

但当写作定时任务时 令该脚本以A用户在每日某时刻执行,却报错:无法在没有X11 $DISPLAY的情况下自动启动 D-bus.

以为是环境变量问题,在/etc/profile 在A的~/.bashrc中各种查找也未找到相关的变量引入。

请问需要加载哪些环境变量才可以在定时任务里正常执行? 谢谢!

或者请问如何实现我的需求呢?(比如如何设置一个定时任务,让它在已经登录A的图形界面弹出执行该脚本,那么应该≈在A的图形界面手动执行吧) 万分感谢

Reply Favorite View the author
All Replies
神末shenmo
deepin
Spark-App
Q&A Team
2023-02-01 18:37
#1

https://gitee.com/deepin-community-store/spark-store/blob/dev/tool/update-upgrade/ss-update-notifier.sh#L11

Reply View the author
W2J
deepin
2023-02-02 03:37
#2

这个很像vino/vnc没用户登录到图形环境,就没法获得远程共享桌面的问题。

systemd已经继init和upstart之后统一了linux世界,成为1号进程。linux世界变天了。。。

systemd擅长管理依赖关系:包括静态定义的(unit)和运行时的(cgroup),还用target取代了runlevel。

systemd实现为一个解释器,不再依赖各种sh脚本。从而把应用服务改造为“即用即启,不用不启”(像不像内存调度?)。

看看x11vnc.service的unit

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target
[Service]
Type=simple

ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage​-repeat -rfbauth /home//.vnc/passwd -rfbport 5900​-shared
[Install]
WantedBy=multi-user.target

符合systemd的依赖关系是不是很精简?
multi-user.target就相当于rcs.d/的runlevel 5(GUI图形用户界面),可能还要去/run/user/1000/
下面看看用户是不是已登录成功,使用了什么桌面管理器和X端口($DISPLAY),作为实际工作/停止的条件。

Reply View the author