无法在 Debian 上使用 cron 自动更改 dconf 的配置(它可以在 Ubuntu 上运行)?

无法在 Debian 上使用 cron 自动更改 dconf 的配置(它可以在 Ubuntu 上运行)?

gnome-terminal该脚本用于在 Ubuntu 22.04 LTS 上从 cron 运行时调整背景颜色和字体颜色。

#!/bin/bash

detect_dstr() {
  distribution=$(grep -E '^ID=' /etc/os-release | awk -v FS='=' '{print $2}')
    
    if [ "$distribution" == "debian" ]; then
        echo "debian"
    elif [ "$distribution" == "ubuntu" ]; then
        echo "ubuntu."
    else
        echo "unknown"
    fi 
}

chng_t_drk() {
    dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/background-color "'#000000'"
    dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/foreground-color "'#ffffff'"
}
chng_t_lght() {

}

h=$(date +%-H) 
if [[ "$h" -gt 16 ]]; then chng_t_drk
elif [[ "$h" -gt 4 &&  "$h" -lt 16 ]]; then chng_t_lght; fi
unset h

我现在在一个基于 Debian 稳定版的发行版使用该脚本sysvinit,并且该脚本不再在 cron 中运行。不过,当我手动执行它时,主题会发生变化。即使指定显示也没有帮助: */10 * * * * DISPLAY=:0 ~/gnome-terminal/change-theme.sh 我检查过dconf-editor,Ubuntu 22.04、Debian 测试(trixie)和 Antix(基于 Debian Stable)上的 ID 是相同的。为什么我无法自动更改后两个发行版上的配置?

答案1

让我们在您的脚本中添加一些内容:

  • 让我们告诉 cron 需要运行哪个 shell 来运行脚本舍邦, 最有可能的/bin/bash。任何脚本的第一行应该始终是 shebang,写为#!/bin/bash
  • sudo chmod +x您需要从终端使脚本可执行。

我不认为您需要指定DISPLAY.

根据您的评论,让我们开始调试cron行为:

  • 现在 cron 中还有其他工作吗?
  • 如果没有,让我们用一些调试 cron 作业来测试一下是否合理:
#Identify what in the path variable in the context of your script
* * * * * echo $PATH > ~/gnome-terminal/cron.log

#Identify the shell being use in your script
* * * * * echo $SHELL > ~/gnome-terminal/cron.log

#Identify the working directory your cron job natively executes in
* * * * * echo $PATH > ~/cron.log

确保$SHELL和 两者$PATH匹配。使用文本编辑器或cat.

问题:您有用户吗crontab,还是默认用户?

相关内容