2017-08-25 9 views
0

Je cours une image presque fraîche de Raspbian Stretch 4.9 avec un bureau et ai un programme qui crée une nouvelle image pour le fond d'ordinateur toutes les quelques minutes.Le papier peint de Pcmanfm échoue sur Raspbian stretch dans cron

Je suis en train de créer une tâche cron pour mettre à jour correctement l'arrière-plan en utilisant pcmanfm et, après avoir suivi les suggestions here, ont créé le script suivant appelé update.sh pour définir l'arrière-plan:

!#/bin/bash 
export DISPLAY=:0 
export XAUTHORITY=/home/pi/.Xauthority 
pcmanfm -w '/home/pi/folder/image.png' 

Le script est exécutable et lorsqu'il est exécuté depuis le terminal, il fonctionne comme prévu. J'ai créé un crontab pour cette course automatiquement en tant que tel:

* * * * * /home/pi/folder/update.sh > /home/pi/folder/log.txt 2>&1 

Lorsque la tâche cron déclenche chaque minute, une fenêtre pop-up apparaît avec une erreur « Desktop Manager n'est pas actif. » avec un bouton « OK » pour le rejeter, et le fichier journal se lit comme suit:

** Message: x-terminal-emulator has very limited support, consider choose another terminal 

J'ai essayé la commande directement dans la crontab

* * * * * DISPLAY=:0 && pcmanfm -w '/home/pi/folder/image.png' > /home/pi/folder/log.txt 2>&1 

Et l'erreur est différent cette fois

Cannot open display: 

Je ne suis pas tout à fait sûr de ce que le sens de faire de cela, bien que de regarder autour de lui semble que les emplois cron peuvent être finnicky. Je ne suis pas sûr si c'est un problème de chemin ou d'environnement parce que je ne connais pas beaucoup de détails sur ces choses, mais je ne pense pas que ce soit un problème car j'utilise le chemin complet de l'image et des scripts. Ce ne devrait pas être une erreur d'autorisation, parce que j'ai essayé ceci sur une crontab d'utilisateur et un crontab de système, et tous les deux échouent. (De plus, l'utilisateur pi par défaut a des permissions root par défaut de toute façon.) Je ne sais pas quoi chercher ou essayer, donc je demande de l'aide si quelqu'un peut me pointer dans la bonne direction ou a déjà rencontré ce problème.

+0

après l'exécution d'une mise à jour sur mon ordinateur portable hier soir (qui comprenait pcmanfm mise à jour) mon script qui a fait la même chose a cessé de fonctionner. Je suppose que le script lancé par cron ne s'exécute pas dans le même "espace utilisateur" que l'utilisateur connecté graphiquement, et qu'il y a donc une variable d'environnement qui n'est pas définie correctement. Malheureusement, je ne suis pas un utilisateur linux expert, mais je vais continuer à creuser et à poster si je trouve une solution. TLDR: Je pense qu'une mise à jour récente l'a cassé. –

Répondre

0

J'ai eu exactement le même problème, sauf que je cours Lubuntu 17.04. Il est apparu récemment après une mise à jour récente, mais ne peut pas identifier quand. Après beaucoup de recherche, je suis devenu méfiant que l'une des variables environnementales XDG doit être exporté aussi. Après quelques essais et erreurs, j'ai trouvé que l'exportation XDG_RUNTIME_DIR a résolu le problème pour moi. Vous voudrez peut-être essayer.

Pour déterminer la valeur d'exécution: echo $XDG_RUNTIME_DIR

Le changeur de fond d'écran de travail en cours d'exécution de cron pour moi ressemble maintenant:

#!/bin/bash 
... 
export DISPLAY=:0 
export XAUTHORITY=/home/krisz/.Xauthority 
export XDG_RUNTIME_DIR=/run/user/1000 
pcmanfm --set-wallpaper=${dir}/${file} --wallpaper-mode=crop 
...