#1 Le 28/07/2017, à 13:31
- GaelP
Problème de scripts avec crontab
Bonjour!
Je rencontre un petit soucis pour l'exécution d'un script à l'aide de crontab.
Je voudrais lancer un programme chaque heure et un autre chaque minute (c'est le même programme, mais avec des arguments différents en fait).
A la base, j'ai édité ma crontab comme ceci:
00 * * * * /home/user_name/measure.sh set
* * * * * /home/user_name/measure.sh
Et mon script measure.sh:
#! /bin/bash
# Go to the right directory if not already
if [ pwd != ~/Testing/ ]
then
cd ~/Testing/
fi
# Launch a single sampling
if [ -z $1 ]; then
java -jar Network.jar -m 1 2 >> test.log
else
if [ $1 = "help" ]; then
# Display help
java -jar Network.jar -h >> test.log
else
# Create a new MeasureSet
java -jar Network.jar -s A304 >> test.log
fi
fi
Mon soucis:
Lorsque j'exécute le script depuis le terminal, tout se passe bien. Les mesures sont effectuées et le fichier log se remplit petit à petit. Lorsque je lance le programme directement depuis la crontab, idem.
Par contre, si j'utilise la crontab comme mentionné plus haut pour lancer le script, plus rien ne se passe...
Les logs de crontab sont les suivants:
Jul 28 14:14:01 *** CRON[30383]: (root) CMD (/home/user_name/runMeasure.sh set)
Jul 28 14:14:01 *** CRON[30382]: (CRON) info (No MTA installed, discarding output)
Jul 28 14:15:01 *** CRON[31748]: (root) CMD (/home/user_name/runMeasure.sh set)
Jul 28 14:15:01 *** CRON[31747]: (CRON) info (No MTA installed, discarding output)
Ce n'est pas vraiment important, vu que j'arrive à me débrouiller en lancant le programme directement, mais j'aimerais bien savoir pourquoi ça ne marche pas...
Merci d'avance
Hors ligne
#2 Le 28/07/2017, à 13:51
- Watael
Re : Problème de scripts avec crontab
salut,
rien n'indique dans le log que tu montres que le script ne s'exécute pas.
par contre, il se peut qu'il y ait un problème qui ne sera pas montré, parce qu'il n'y a pas de serveur mail (MTA) installé.
pour voir les erreurs, soit tu installes un MTA, soit tu ajoutes
exec 2>/tmp/"${0#*/}.log"
sous le shebang, et tu pourras alors consulter le fichier /tmp/measure.sh.log après son exécution présumée.
d'autre part, il y a peu de chance que, lancé par cron, le script s'exécute depuis ~/Testing, le test semble donc inutile, il sera toujours vrai : $PWD ne vaudra jamais ~/Testing.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#3 Le 28/07/2017, à 14:00
- GaelP
Re : Problème de scripts avec crontab
rien n'indique dans le log que tu montres que le script ne s'exécute pas.
C'est pour ça que j'avais mis:
>> test.log
dans le script et que pour chaque fois que le programme se lance, je fait un print...
Mais le fichier test.log reste vide.
Je vais essayer de faire comme tu dis:
exec 2>/tmp/"${0#*/}.log"
On verra bien ce que ça fait
d'autre part, il y a peu de chance que, lancé par cron, le script s'exécute depuis ~/Testing, le test semble donc inutile, il sera toujours vrai : $PWD ne vaudra jamais ~/Testing.
C'est pas faux. J'y avait pas réfléchi avant
Je corrigerai ça aussi.
En tout cas merci bien pour tes conseils avisés ^^
Hors ligne