J'essaie d'exécuter un script sh
chaque minute à l'aide de crontab, mais cela ne fonctionne pas.
Lorsque je lance le script manuellement, il s'exécute correctement, mais crontab ne peut pas le faire.
J'ai créé le travail en utilisant crontab -e
, et je peux voir que cron est en cours d'exécution car si je tape pgrep cron
, j'obtiens le PID en retour.
Je sais aussi que mon format d’heure est correct car je l’ai testé avec ce testeur en ligne .
wallpaperSlider.sh :
#!/bin/bash
feh --randomize --bg-fill /home/username/Pictures/wallpapers/*
travail crontab :
Shell=/bin/bash
* * * * * username /home/username/.crons/wallpaperSlider.sh
J'ai lu les erreurs les plus courantes dans AskUbuntu et je ne pense pas en connaître.
Je comprends qu’il me manque peut-être une variable d’environnement, mais je ne sais pas comment vérifier cela.
Je sais aussi que crontab -e
modifie/crée un fichier tmp, dans mon cas /tmp/crontab.wCajAu/crontab
.
crontab -e
change un fichier dans le dossier tmp
, vais-je perdre toutes les modifications après le redémarrage?Votre format de cron est faux. Tu veux:
* * * * * /home/username/.crons/wallpaperSlider.sh
Les crontabs de l'utilisateur n'ont pas de champ username
. Cela n'est utilisé que pour les crontabs à l'échelle du système comme /etc/crontab
. Vous n’avez pas besoin non plus de Shell=/bin/bash
puisque, même si votre shell par défaut n’est pas bash (c’est dash
sur Ubuntu), votre script lui-même a la ligne Shebang (#!/bin/bash
) sera exécuté par bash
peu importe le lancement de Shell Cron.
Cependant, vous aurez probablement d’autres problèmes, puisque vous essayez d’exécuter une application qui communique avec le serveur X à partir de cron. Si oui, vous devez utiliser:
DISPLAY=":0.0"
XAUTHORITY="/home/YOURUSERNAME/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"
* * * * * /home/username/.crons/wallpaperSlider.sh