web-dev-qa-db-fra.com

travail crontab ne fonctionne pas

Arrière plan

J'essaie d'exécuter un script sh chaque minute à l'aide de crontab, mais cela ne fonctionne pas.

Problème

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 .

Code

wallpaperSlider.sh :

#!/bin/bash
feh --randomize --bg-fill /home/username/Pictures/wallpapers/*

travail crontab :

Shell=/bin/bash

* * * * * username /home/username/.crons/wallpaperSlider.sh

Recherche

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.

Question

  1. Comment puis-je faire exécuter ce script dans cron?
  2. Sachant que crontab -e change un fichier dans le dossier tmp, vais-je perdre toutes les modifications après le redémarrage?
2
Flame_Phoenix

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
3
terdon