Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

resultat different d'un script appele par cron ou en console

10 réponses
Avatar
C Diaz
Bonsoir,

Mon problème du jour, un script, appelé par cron, ne donne pas le même
résultat que si je l'exécute dans une console.

Dans la crontab de root il y a cette ligne:
30 20 * * * /usr/local/bin/mon_script.sh

et mon script contient les lignes:
-------------- extrait du script ------------------------
#! /bin/bash

date +%A_%d_%B_%Y_%Hh_%M > /home/chr/info_fsck

echo "/dev/sda6, partition / de 19 G" >> /home/chr/info_fsck
tune2fs -l /dev/sda6 | grep "Mount count:" >> /home/chr/info_fsck
tune2fs -l /dev/sda6 | grep "Maximum mount count:" >> /home/chr/info_fsck
---------------- fin extrait ----------------------------

1) Appelé par cron mon_script.sh donne les 2 lignes ci-dessous:

vendredi_01_mars_2013_20h_30
/dev/sda6, partition / de 19 G

2) Appelé dans une console il donne les 4 lignes attendues:

vendredi_01_mars_2013_20h_06
/dev/sda6, partition / de 19 G
Mount count: 4
Maximum mount count: 32

Pourquoi le script appelé par cron "ne voit pas" la commande tune2fs ?
Le problème est le même pour toutes les autres partitions du système, ce
n'est pas lié à /dev/sda6.

Merci pour votre aide.
Cordialement
Christophe

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/51312879.9010500@laposte.net

10 réponses

Avatar
SIAGEP - Stéphane RIGOULOT
Du fonctionnement du grep dans les scripts CRON.
Quelques pistes :
http://www.dbforums.com/unix-shell-scripts/731441-strange-problem-grep-cr on-
not-working.html
http://www.linuxquestions.org/questions/linux-general-1/grep-does-not-wor k-i
n-crontab-script-579483/
http://serverfault.com/questions/449651/why-is-my-crontab-not-working-and -ho
w-can-i-troubleshoot-it


Cordialement

---------------------------------------------------------
,
/ RIGOULOT Stéphane
/ `--
/ Responsable du service Informatique - SIAGEP
` S |
` I _|
` A _
` G | tel : 03 84 57 65 82
`|_ E FAX : 03 84 57 65 66
P
/ ,. ,' mail :
_/ `'

---------------------------------------------------------
-----Message d'origine-----
De : C Diaz [mailto:]
Envoyé : vendredi 1 mars 2013 23:15
À :
Objet : resultat different d'un script appele par cron ou en console

Bonsoir,

Mon problème du jour, un script, appelé par cron, ne donne pas le même
résultat que si je l'exécute dans une console.

Dans la crontab de root il y a cette ligne:
30 20 * * * /usr/local/bin/mon_script.sh

et mon script contient les lignes:
-------------- extrait du script ------------------------
#! /bin/bash

date +%A_%d_%B_%Y_%Hh_%M > /home/chr/info_fsck

echo "/dev/sda6, partition / de 19 G" >> /home/chr/info_fsck
tune2fs -l /dev/sda6 | grep "Mount count:" >> /home/chr/info_fsck
tune2fs -l /dev/sda6 | grep "Maximum mount count:" >> /home/chr/info_fsck
---------------- fin extrait ----------------------------

1) Appelé par cron mon_script.sh donne les 2 lignes ci-dessous:

vendredi_01_mars_2013_20h_30
/dev/sda6, partition / de 19 G

2) Appelé dans une console il donne les 4 lignes attendues:

vendredi_01_mars_2013_20h_06
/dev/sda6, partition / de 19 G
Mount count: 4
Maximum mount count: 32

Pourquoi le script appelé par cron "ne voit pas" la commande tune2fs ?
Le problème est le même pour toutes les autres partitions du système, ce
n'est pas lié à /dev/sda6.

Merci pour votre aide.
Cordialement
Christophe

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://lists.debian.org/


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://lists.debian.org/
Avatar
moi-meme
Le Sat, 02 Mar 2013 02:10:01 +0100, SIAGEP - Stéphane RIGOULOT a écrit :

Pourquoi le script appelé par cron "ne voit pas" la commande tune2fs ?
Le problème est le même pour toutes les autres partitions du système, ce
n'est pas lié à /dev/sda6.



J'ai déjà eu le même problème : résolu en mettant le chemin absolu des
commandes/fichiers data.

AMHA $PATH n'est pas le même.

D'autres (meilleurs) que moi donneront l'explication qui m'intéresse
aussi.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/5131b498$0$2302$
Avatar
C Diaz
Le 02/03/2013 09:13, moi-meme a écrit :

J'ai déjà eu le même problème : résolu en mettant le chemin absolu des
commandes/fichiers data.
.../...



Chez moi ça ne marche pas aussi bien, la commande grep semble plus
récalcitrante.
Dans le script appelé par cron,

/sbin/tune2fs -l >> fichier_enregistrant_la_sortie

fonctionne

mais
/sbin/tune2fs -l | /bin/grep "ma chaine de tri" >>
fichier_enregistrant_la_sortie

ne fonctionne pas.

Ce n'est pas bien grave, je scinde l'opération en deux, l'opération
"grep" se faisant par un autre script appelé directement en ligne de
commande.
Merci pour vos pistes.
Cordialement
Christophe



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Vincent Lefevre
On 2013-03-02 08:13:12 +0000, moi-meme wrote:
Le Sat, 02 Mar 2013 02:10:01 +0100, SIAGEP - Stéphane RIGOULOT a écrit :
> Pourquoi le script appelé par cron "ne voit pas" la commande tune2fs ?
> Le problème est le même pour toutes les autres partitions du système, ce
> n'est pas lié à /dev/sda6.

J'ai déjà eu le même problème : résolu en mettant le chemin absolu des
commandes/fichiers data.

AMHA $PATH n'est pas le même.



J'ai aussi eu le même problème lié à un $PATH différent. Ma solution
a été de modifier le $PATH dans le fichier "/etc/crontab":

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

--
Vincent Lefèvre - Web: <http://www.vinc17.net/&gt;
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/&gt;
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Vincent Lefevre
On 2013-03-02 10:51:47 +0100, C Diaz wrote:
Chez moi ça ne marche pas aussi bien, la commande grep semble plus
récalcitrante.
Dans le script appelé par cron,

/sbin/tune2fs -l >> fichier_enregistrant_la_sortie

fonctionne

mais
/sbin/tune2fs -l | /bin/grep "ma chaine de tri" >>
fichier_enregistrant_la_sortie

ne fonctionne pas.

Ce n'est pas bien grave, je scinde l'opération en deux, l'opération "grep"
se faisant par un autre script appelé directement en ligne de commande.



Le résultat de "grep" peut dépendre des locales, et il se peut que
les locales avec cron et avec un shell interactif soient différentes.
Ceci dit, avec les chaîne que tu donnes dans ton script, il serait
étonnant de voir une différence.

Autre chose... Est-ce que les deux commandes suivantes donnent la même
sortie?

/sbin/tune2fs -l >> fichier_enregistrant_la_sortie
/sbin/tune2fs -l | cat >> fichier_enregistrant_la_sortie

(Certains utilitaires perdent des données avec un pipe sous certaines
conditions.)

--
Vincent Lefèvre - Web: <http://www.vinc17.net/&gt;
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/&gt;
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Francois Mescam
On 01/03/2013 23:15, C Diaz wrote:
Bonsoir,

Mon problème du jour, un script, appelé par cron, ne donne pas le même
résultat que si je l'exécute dans une console.




Ce ne serait pas cron qui lance ton script avec bash/dash et en console
que ce soit le contraire.

--
F.Mescam

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/kgv13p$f4q$
Avatar
C Diaz
Le 03/03/2013 09:20, Francois Mescam a écrit :
On 01/03/2013 23:15, C Diaz wrote:
Bonsoir,

Mon problème du jour, un script, appelé par cron, ne donne pas le même
résultat que si je l'exécute dans une console.




Ce ne serait pas cron qui lance ton script avec bash/dash et en
console que ce soit le contraire.



Bonjour,

Tiens, dash, c'est la première fois que j'en entends parler. Pourtant
mon script appelé par cron commence bien par
#! /bin/bash
Si cron utilise dash par défaut, je ne vais pas trop y toucher, il y
peut-être une bonne raison à ce choix.
Christophe

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
C Diaz
Le 03/03/2013 02:06, Vincent Lefevre a écrit :
.../...
Autre chose... Est-ce que les deux commandes suivantes donnent la même
sortie?

/sbin/tune2fs -l>> fichier_enregistrant_la_sortie
/sbin/tune2fs -l | cat>> fichier_enregistrant_la_sortie

(Certains utilitaires perdent des données avec un pipe sous certaines
conditions.)




Oui les deux commandes dans un script appelé par cron donnent la même
chose, ce n'est donc pas pipe qui pose problème.
Christophe

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Vincent Lefevre
Bonjour,

On 2013-03-03 09:49:04 +0100, C Diaz wrote:
Le 03/03/2013 09:20, Francois Mescam a écrit :
>Ce ne serait pas cron qui lance ton script avec bash/dash et en console
>que ce soit le contraire.

Tiens, dash, c'est la première fois que j'en entends parler. Pourtant mon
script appelé par cron commence bien par
#! /bin/bash
Si cron utilise dash par défaut, je ne vais pas trop y toucher, il y
peut-être une bonne raison à ce choix.



Par défaut, cron utilise /bin/sh, qui correspond à dash sur les
Debian récentes. Mais c'est pour lancer la commande, qui peut être
plus compliquée qu'un nom de script (cf exemples dans la page man
crontab(5)). Le script lui-même va être exécuté par bash, sauf si
la commande dans le crontab est ". nom_du_script", le "." étant
une commande shell pour exécuter un script dans le shell courant.

--
Vincent Lefèvre - Web: <http://www.vinc17.net/&gt;
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/&gt;
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Vincent Lefevre
On 2013-03-02 10:51:47 +0100, C Diaz wrote:
Chez moi ça ne marche pas aussi bien, la commande grep semble plus
récalcitrante.
Dans le script appelé par cron,

/sbin/tune2fs -l >> fichier_enregistrant_la_sortie

fonctionne

mais
/sbin/tune2fs -l | /bin/grep "ma chaine de tri" >>
fichier_enregistrant_la_sortie

ne fonctionne pas.



Les locales peuvent faire une différence, mais il y a également
d'autres choses: plus généralement, l'environnement, car grep
est sensible à certaines variables d'environnement, listées dans
sa page man (e.g. GREP_OPTIONS). Le fait aussi que les commandes
soient attachées à un terminal ou non...

Autre chose que tu peux tester:

/sbin/tune2fs -l > fichier_tmp
/bin/grep "ma chaine de tri" fichier_tmp >> fichier_enregistrant_la_sortie

--
Vincent Lefèvre - Web: <http://www.vinc17.net/&gt;
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/&gt;
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/