1 votes

Comment savoir pourquoi ma crontab ne fonctionne pas ?

Je suis un novice ... Je le dis d'emblée. J'ai un simple serveur Ubuntu 20.04 LTS utilisé uniquement comme serveur minecraft.

La crontab me pose quelques problèmes

*/10 * * * * screen -S minecraft -p 0 -X stuff "save-all^M"
@reboot /home/minecraft/startserver.sh
@daily find /home/minecraft/backup/* -mtime +6 -type f -delete
@daily zip -9 -r --exclude=*backup* --exclude=*web* --exclude=*crash-reports* --exclude=*lost+found* /home/minecraft/backup/$(date +"%Y.%m.%d %I.%M %P").zip /home/minecraft

La première ligne fonctionne, mais @daily et @reboot ne fonctionnent pas du tout. TOUTES les commandes fonctionnent à partir du terminal sans erreur.

Je n'ai pas d'expérience avec Linux et j'essaie de comprendre ce qui se passe. Je suis conscient que certaines personnes pourraient penser que cela serait mieux géré avec systemd, mais je suis trop nouveau pour comprendre cela et je ne veux pas installer un script que je ne peux pas réparer.

Pourquoi la crontab ne contient-elle pas ces lignes ? Je ne pense pas qu'il s'agisse de permissions. Merci de m'aider à déboguer ce problème

Merci pour votre temps

EDIT : OK, après avoir creusé, le problème avec le script de startserver était dans le script lui-même et non dans la crontab. J'ai découvert que j'ai besoin d'avoir le fichier -d pour la commande screen dans la crontab.

La commande zip fonctionne, mais je n'arrive pas à trouver le code d'échappement à utiliser pour ajouter des espaces dans la date. backup/$(date +"\%Y.\%m.\%d \%I.\%M \%P").zip Utilisation d'une barre oblique \ ou en utilisant " " ne fonctionnent pas. Si quelqu'un sait comment sortir d'un espace avec la création de fichiers zip, merci de me le faire savoir.

Dans les commentaires, on m'a dit d'utiliser le format approprié pour éditer le message. Je ne sais pas ce que cela signifie, c'est mon premier message.

0voto

waltinator Points 32821

Les emplois sont gérés par cron ou systemd Les scripts de démarrage ne sont pas exécutés dans le même environnement d'exécution que celui que vous avez sur votre bureau. systemd Les scripts de démarrage sont exécutés en tant que root . Aucun de vos PATH ou d'autres paramètres de variables d'environnement sont automatiquement répercutés sur votre site Web. cron emploi. Par exemple, il n'y a pas de $DISPLAY Les programmes GUI nécessitent donc un traitement particulier (lire man xhost ).

Il est possible de définir des variables d'environnement pour tous les systèmes d'information de l'entreprise. cron emplois dans les crontab dossier Lire man 5 crontab .

Regardez les résultats de echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias dans chacun de vos environnements.

Depuis l'entrée en vigueur de la command partie de la crontab est, par défaut, interprétée par /bin/sh qui a une syntaxe plus simple que /bin/bash Je recommande d'avoir command soit un appel à un bash script (exécutable, monté, commence par #!/bin/bash ) qui met en place l'environnement, puis appelle le programme souhaité.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X