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

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日

悬赏问题

  • ¥15 (标签-STM32|关键词-智能小车)
  • ¥20 关于#stm32#的问题,请各位专家解答!
  • ¥15 (标签-python)
  • ¥15 第一个已完成,求第二个做法
  • ¥20 搭建awx,试了很多版本都有错
  • ¥15 java corba的客户端该如何指定使用本地某个固定IP去连接服务端?
  • ¥15 activiti工作流问题,求解答
  • ¥15 有人写过RPA后台管理系统么?
  • ¥15 Bioage计算生物学年龄
  • ¥20 如何将FPGA Alveo U50恢复原来出厂设置哇?