梦中情萱 2023-02-01 10:31 采纳率: 63.9%
浏览 50
已结题

crontab脚本执行时缺少X11$DISPLAY,手动执行不报错

统信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的图形界面手动执行吧) 万分感谢

  • 写回答

4条回答 默认 最新

  • 社区专家-Monster-XH 2023-02-01 10:49
    关注
    
    #!/bin/bash
    # 将当前用户的锁定延迟设置为 0
    
    # 获取用户名
    user=$(whoami)
    
    # 获取用户的 文件路径
    xauth_file=$(find /tmp -name ".Xauthority-${user}-*" | head -n 1)
    
    #使用gsettings将锁定延迟设置为0
    DISPLAY=:0 XAUTHORITY=${xauth_file} gsettings set com.deepin.dde.power line-power-lock-delay 0
    
    

    然后,你可以在crontab中使用如下命令来设置定时任务:

    0 0 * * * /path/to/your/script.sh
    
    
    

    这将在每天的0点0分执行该脚本。记录crontab时,要以当前用户身份运行crontab,以确保以当前用户身份执行脚本。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 创建了问题 2月1日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改