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 安定版ベースの Distroスクリプトを使用sysvinitすると、cron で実行されなくなります。ちなみに手動で実行するとテーマが変わります。ディスプレイを指定しても役に立ちません。 */10 * * * * DISPLAY=:0 ~/gnome-terminal/change-theme.sh 確認してみると、dconf-editorUbuntu 22.04、Debianテスト(trixie)、Antics(Debian Stableベース)のIDは同じです。後者の2つのディストリビューションで構成を自動的に変更できないのはなぜですか?

答え1

スクリプトにいくつかのコンテンツを追加しましょう。

  • スクリプトを実行するには、どのシェルを実行する必要があるかをcronに教えてください。シェルボーン、おそらく/bin/bash。すべてのスクリプトの最初の行は常にshebangでなければなりません#!/bin/bash
  • sudo chmod +x端末でスクリプトを実行可能にする必要があります。

指定する必要はないようですDISPLAY

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、それともデフォルトのユーザーですか?

関連情報