GNU/Linux >> Tutoriels Linux >  >> Ubuntu

La tâche Cron ne s'exécute pas ?

Je faisais une tâche cron pour sauver mon monde Minecraft de mon ram toutes les 5 minutes.
J'ai testé le script et il semble fonctionner.

Voici à quoi ressemble le script :

#!/bin/sh


VOLATILE="/home/jonathan/Games/Minecraft/Server/world/"
PERMANENT="/home/jonathan/Games/Minecraft/Server/world_storage/"
rsync -r -t -v "$VOLATILE" "$PERMANENT"

Alors je suis allé ajouter une tâche cron pour exécuter le script toutes les 5 minutes, et il ne semble pas l'exécuter.

Voici le script que j'ai utilisé :

*/5 * * * * bash /home/jonathan/Games/Minecraft/Server/Backup.sh

Quelqu'un peut-il m'aider s'il vous plait ?

Réponse acceptée :

Vous n'avez pas précisé comment vous avez ajouté votre cronjob. Cela fait une grande différence :si vous avez utilisé crontab -e dans votre propre compte, les scripts sont exécutés avec votre utilisateur (et donc l'entrée crontab a un champ de moins - l'utilisateur pour l'exécuter, comme cela est connu). Si vous avez simplement copié votre extrait ci-dessus dans /etc/cron.d , il échouerait car vous n'avez pas spécifié d'utilisateur (ou plutôt car il ne trouve aucun utilisateur nommé "bash"). Vous devez donc suivre les étapes suivantes :

  1. mettre à jour votre question avec des informations sur la façon dont vous avez ajouté la tâche cron
  2. vérifier les journaux système (/var/log/syslog; ils pourraient signaler d'éventuelles erreurs)
  3. ajoutez une sortie de débogage à votre Backup.sh script pour voir s'il est lancé

Le troisième point peut être atteint de plusieurs manières :

  • ajouter un >>/tmp/testlog.log à la fin de votre entrée crontab (pour rediriger la sortie vers un fichier que vous pouvez étudier ; en plus, un 2>&1 inclurait la sortie de la console d'erreur)
  • ajoutez quelques lignes à votre script lui-même, comme par ex. echo "Backup.sh started">/tmp/testlog.log

De plus :Comme vous souhaitez que votre script soit exécuté à l'aide de bash , vous ne devriez pas lui dire d'utiliser /bin/sh (ce qui lui ferait utiliser dash sur une installation Ubuntu par défaut), mais plutôt /bin/bash . Ensuite, rendez-le exécutable et vous pouvez même omettre le "bash" de votre entrée crontab.

Mise à jour :

D'après votre commentaire sur ma réponse, vous avez utilisé crontab -e pour créer le travail, et selon les journaux de votre système, il est exécuté, mais la définition est plutôt

*/5 * * * * bash /home/jonathan/Games/Minecraft/Server/Backup.sh &>/dev/null

Cela redirige toutes les sorties vers le plus grand stockage de votre système, le "trou noir" :/dev/null mange tout (mais ne rend jamais rien). La redirection de STDOUT ainsi que de STDERR de cette manière vous prive de tout rapport d'erreur - vous ne savez donc jamais qu'ils se sont produits, sans parler des détails. Pour les tests, vous devez omettre le &>/dev/null partie complètement. Même si cela fonctionne, vous ne devez supprimer que les sorties inutiles, sinon vous ne savez jamais quand quelque chose ne va pas. Il vaut donc mieux omettre au moins l'esperluette, afin que Cron puisse signaler toute erreur survenue.

En relation :La station d'accueil USB pour disque dur Seagate de 4 To ne fonctionne qu'avec moins de 2,2 To de données ?

De plus :une fois que la sortie est redirigée (comme dans votre cas vers /dev/null ), l'ajout d'une autre redirection à la fin ne donnera aucun résultat, car tout est déjà parti. Je dois donc ajuster les conseils ci-dessus de "ajouter ... à la fin de votre entrée crontab" à "remplacer cela dans votre entrée crontab" 😉


Ubuntu
  1. Gestion des tâches Cron en double lors de l'exécution de scripts

  2. Problème Crontab :la tâche Cron ne fonctionne pas lors de l'utilisation d'un pourcentage

  3. Tester une tâche cron hebdomadaire

  4. Passer les paramètres $_GET à la tâche cron

  5. CronJob ne fonctionne pas

Comment configurer une tâche Cron sous Linux

Tâches Cron planifiées

Le script shell n'est pas exécuté après l'avoir ajouté en tant que tâche Crontab ?

Comment configurer le travail cron pour exécuter un script PHP dans cPanel ?

Qu'est-ce qu'un travail Cron sous Linux

Pourquoi ma tâche cron ne m'envoie-t-elle pas d'e-mail ?