1 votes

Fedora Besoin de l'aide Job Cron

J'ai besoin de conseils car je suis devenu fou à cause de Cron sur ma boîte Fedora 8.

j'ai un script de base qui est stocké dans

/tmp/myscript.sh

Voici une copie du code à l'intérieur de ce script.

#!/bin/bash

AFolderName="archivefolder"
AFileName="archive.zip"

echo "définition des variables"

if [ -d $AFolderName ]
then
rm -r $AFolderName
fi

echo "vérifie si le dossier existe"
mkdir $AFolderName
cd $AFolderName

echo "sur le point de compresser"
zip -r $(date +%Y%m%d)_$AFileName /var/www/*

echo "compressé"

echo "sur le point d'envoyer vers s3"
s3cmd put $(date +%Y%m%d)_$AFileName s3://mytestbucket

echo "envoyé vers s3"

cd ..
rm -r $AFolderName

echo "terminé"

j'ai fait crontab -e et ajouté un travail selon le format requis, et le travail semble s'exécuter car je obtiens un fichier journal dans le dossier temporaire. cependant il n'y a rien dans le fichier journal et rien n'est téléchargé sur amazon...

voici ce qui est dans crontab

*/10 * * * * root /tmp/myscript.sh > /tmp/ms.log

quoi est-ce que je fais mal? il n'y a aucun indice sur quel est le problème. au fait, le script DOIT s'exécuter en tant que root.

1voto

asheeshr Points 145

Acceptez que vous devez vous connecter en tant que root ou $ sudo su pour vraiment devenir root, puis faites votre # crontab -e et retirez le "root" de votre ligne crontab - comme il semble que vous avez découvert qu'il n'aime pas.

Ensuite, vous pouvez exécuter votre script en tant que root - pratiquement comme vous l'aviez déjà.

0voto

isherwood Points 107

Êtes-vous sûr que le fichier a le drapeau d'exécution activé, (ls -l /tmp/myscript.sh) et que /tmp n'est pas monté en "noexecute"? (mount) Le fichier journal vide sera créé par le shell, simplement en raison de la redirection. Mais cela ne signifie pas que le script s'exécute réellement. Et comme vous n'avez pas redirigé la sortie d'erreur, vous ne verrez jamais ce message. (Bien qu'il ait probablement été envoyé à l'utilisateur root?)

En plus de ce qui précède, voici quelques choses à essayer :
A) Exécutez le script manuellement, à partir de la ligne de commande. Assurez-vous qu'il fait réellement quelque chose.
B) Vous pouvez vouloir importer un fichier de profil au début du script. Sinon, vous pourriez manquer des variables de chemin et d'environnement nécessaires à votre script.
C) Redirigez la sortie d'erreur du travail cron. Soit vers le même fichier, avec 2>&1 à la fin, soit vers un fichier séparé avec 2> diff_file.txt. Cela vous donnera probablement un aperçu de ce qui s'est mal passé.

--Christopher Karel

0voto

Kristiaan Points 422

La manière correcte de procéder était

Voici une copie du code contenu dans ce script, sudo était nécessaire sur la ligne s3cmd.

#!/bin/bash

NomDossier="archivefolder"
NomFichier="archive.zip"

echo "définition des variables"

if [ -d $NomDossier ]
then
rm -r $NomDossier
fi

echo "vérification de l'existence du dossier"
mkdir $NomDossier
cd $NomDossier

echo "sur le point de zipper"
zip -r $(date +%Y%m%d)_$NomFichier /var/www/*

echo "zippé"

echo "sur le point de s3"
sudo s3cmd put $(date +%Y%m%d)_$NomFichier s3://mytestbucket

echo "s3é"

cd ..
rm -r $NomDossier

echo "terminé"

crontab doit avoir ROOT retiré.

*/10 * * * * /tmp/myscript.sh > /tmp/ms.log

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