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) 및 Antix(Debian Stable 기반)에서 ID가 동일합니다. 후자의 두 배포판에서 구성을 자동으로 변경할 수 없는 이유는 무엇입니까?

답변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, 아니면 기본 사용자입니까?

관련 정보