2017-10-20 27 views
0

J'essaie de créer une méthode pour changer mon fond d'écran de façon aléatoire. J'utilise crontab pour gérer le changement toutes les 10 minutes.Exécution de la commande à partir de cron ne fonctionne pas sans erreur

Le crontab

*/10 * * * * /usr/bin/feh --recursive --randomize --bg-fill 
/home/aaron/Pictures/wallpapers/minimalist 2>&1 

Le syslog

syslog:Oct 20 09:20:01 skull-nuc CRON[19895]: (aaron) CMD (/usr/bin/feh --recursive --randomize --bg-fill /home/aaron/Pictures/wallpapers/minimalist 2>&1) 
syslog:Oct 20 09:30:01 skull-nuc CRON[20449]: (aaron) CMD (/usr/bin/feh --recursive --randomize --bg-fill /home/aaron/Pictures/wallpapers/minimalist 2>&1) 

tir Trouble -

D'abord, je changé ma coquille sh et testé la commande. Ça marche. J'ai testé la commande dans bash. Ça marche. Je l'autorise à partir de cron et rien ne se passe et aucune erreur n'est produite. Il ne fonctionne que toutes les dix minutes et mon fond ne change que lorsque je le fais manuellement.

J'ai vérifié

  1. Script fonctionne seul
  2. Script fonctionne du service cron sh
  3. est en cours d'exécution
  4. Cron exécute la commande sans sortie discernable
  5. Je ne suis pas sûr que les autres faire
+0

Peut-être dire quel shell à exécuter: '/ bin/sh/usr/bin/feh --recursive ...' Aussi, comment dites-vous s'il y a sortie? Peut-être que vous devriez rediriger vers un fichier '2> & 1/some/file.log' – JNevill

+0

Oh. nm. Je vois que "feh" est son propre programme. Shell ne devrait pas avoir d'importance. Pas familier avec 'feh'. Avez-vous besoin de spécifier un fichier à afficher ou quoi que ce soit? Comment savez-vous qu'il n'y a pas de sortie quand elle passe par cron? – JNevill

+0

Est-ce que 'feh' a besoin que la variable d'environnement DISPLAY soit définie, afin qu'elle se connecte à la bonne session X pour changer son arrière-plan? DISPLAY n'est probablement pas défini dans l'environnement cron. –

Répondre

2

L'environnement cron sera généralement différent de l'environnement que vous avez dans un shell interactif. Dans ce cas, vous devez vérifier la variable d'environnement DISPLAY, que de nombreux utilitaires X utilisent pour déterminer à quelle session se connecter. Si ce n'est pas le cas, feh échouera probablement de la manière que vous avez décrite.

Les variables d'environnement manquantes peuvent être définies directement dans la ligne de commande que vous utilisez dans crontab, ou vous pouvez écrire un script wrapper qui configure l'environnement, puis appelle feh, puis appelle le wrapper à partir de cron.