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

[HS] shell et environnement console versus CRON

9 réponses
Avatar
fabrice régnier
salut la liste,

J'ai cherché la liste adéquate (shell french) pour poster mais je n'ai
rien trouvé. Alors si quelqu'un peu me re-redonner l'@ de ce NG. merci.

Sinon, voici mon petit soucis:

Dans la crontab de l'utilisateur contact, j'ai ceci:

* */1 * * * [ -z "$(/usr/bin/pgrep -f mon_script.sh)" ] &&
/home/contact/mon_script.sh

Ca doit lancer mon_script.sh s'il ne tourne pas déjà.

La crontab fait bien son boulot car je vois:

FA:~# grep mon_script.sh /var/log/syslog|tail -n 1
Oct 15 12:29:01 FA /USR/SBIN/CRON[2837]: (contact) CMD ([ -z
"$(/usr/bin/pgrep -f mon_script.sh)" ] && /home/contact/mon_script.sh)

Par contre, mon_script.sh n'est pas exécuté.

Lorsque j'exécute en console la même commande:

contact@FA:~$ [ -z "$(/usr/bin/pgrep -f mon_script.sh)" ] &&
/home/contact/mon_script.sh

alors, mon_script.sh démarre bien.

Quelqu'un a une idée de mon erreur ?

Merki!

f.

--
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/4e99663b$0$596$426a34cc@news.free.fr

9 réponses

Avatar
Grégory Bulot
Bonjour,

Le Sat, 15 Oct 2011 12:53:46 +0200, fabrice régnier, vous avez écrit :


FA:~# grep mon_script.sh /var/log/syslog|tail -n 1
Oct 15 12:29:01 FA /USR/SBIN/CRON[2837]: (contact) CMD ([ -z
"$(/usr/bin/pgrep -f mon_script.sh)" ] && /home/contact/mon_script.sh)

Par contre, mon_script.sh n'est pas exécuté.



renome ton fichier et ton cron en retirant l'extension (.sh)


--
Cordialement
Grégory BULOT

--
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
Florent Bayle
--nextPart7581877.MemcFd4bCh
Content-Type: Text/Plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

fabrice régnier , samedi 15 octobre 2011 - 12:53 :
salut la liste,

J'ai cherché la liste adéquate (shell french) pour poster mais je n'ai
rien trouvé. Alors si quelqu'un peu me re-redonner l'@ de ce NG. merci.

Sinon, voici mon petit soucis:

Dans la crontab de l'utilisateur contact, j'ai ceci:

* */1 * * * [ -z "$(/usr/bin/pgrep -f mon_script.sh)" ] &&
/home/contact/mon_script.sh

Ca doit lancer mon_script.sh s'il ne tourne pas déjà.

La crontab fait bien son boulot car je vois:

FA:~# grep mon_script.sh /var/log/syslog|tail -n 1
Oct 15 12:29:01 FA /USR/SBIN/CRON[2837]: (contact) CMD ([ -z
"$(/usr/bin/pgrep -f mon_script.sh)" ] && /home/contact/mon_script.sh)

Par contre, mon_script.sh n'est pas exécuté.

Lorsque j'exécute en console la même commande:

:~$ [ -z "$(/usr/bin/pgrep -f mon_script.sh)" ] &&
/home/contact/mon_script.sh

alors, mon_script.sh démarre bien.

Quelqu'un a une idée de mon erreur ?



Salut,

Pour lancer la commande, cron va lancer un /bin/sh -c la commande, donc dan s
le cas présent, /bin/sh -c [ -z "$(/usr/bin/pgrep -f mon_script.sh)" ] &&
/home/contact/mon_script.sh, et donc, évidemment, le pgrep va donc renvoy er le
pid du /bin/sh (notamment à cause du -f), et la commande ne sera donc pas
lancée.
La solution peut donc être d'enlever le -f.

--
Florent

--nextPart7581877.MemcFd4bCh
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iEYEABECAAYFAk6ZcscACgkQM+Ix3/RCm3gx/wCfXJsGg9NXlju8RDUcQ1AePzTH
uGIAn304MHkVXxFPMI4AqZYAx/72/IL5
=hTaG
-----END PGP SIGNATURE-----

--nextPart7581877.MemcFd4bCh--

--
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
Jean-Yves F. Barbier
On Sat, 15 Oct 2011 12:53:46 +0200
fabrice régnier wrote:

* */1 * * * [ -z "$(/usr/bin/pgrep -f mon_script.sh)" ] &&
/home/contact/mon_script.sh



Et avec:
* */1 * * * if [ -z "$(/usr/bin/pgrep -f mon_script.sh)" ]; then /home/cont act/mon_script.sh; fi
?

--

--
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
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 15/10/2011 13:20, fabrice régnier a écrit :

alors, mon_script.sh démarre bien.

Quelqu'un a une idée de mon erreur ?



Le script démarre peut-être bien, mais plante après.
Cron nettoie les variables d'environnement, par exemple PATH qui est
réduit à sa plus simple expression « /usr/bin:/bin ».
mon_script.sh doit donc utiliser les binaires de manière absolue, et non
pas en faisant l'hypothèse qu'ils sont dans le PATH.

$ cat test
#!/bin/bash
/usr/bin/env > test.out

$ crontab -l
* * * * * /home/aeris/test

$ cat test.out
SHELL=/bin/sh
PATH=/usr/bin:/bin
PWD=/home/aeris
LANG=fr_FR.UTF-8
SHLVL=1
HOME=/home/aeris
LOGNAME®ris
_=/usr/bin/env

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJOmXJMAAoJEK8zQvxDY4P9a1gIAL45KA0b9YO6f3ms7TZ0SfJu
GDBx2saWVTS+0rMoDur90XfPmueaMbnBUeP9axS8zCsLmP+8dd4YfzxRwqznkxib
+ljXgF0gt3mAQzJ1hrBREexjicY2Ae6W7CeifgD2gZaGwfxDpBk4GNwusFu6u8N3
NFM76au1hlP8x0Yq7wPOo+U+E0KB1gRHW2jkJg9kvqLZrbLn2NpSC5/4kvL/0qSv
rQmc67waMS62RoCb88td+y8F6kH8Q/Aghyt4/+3Zv1bFwB7CqF55uOD1hgjphERs
RRHN3a9M6HQYe4DzlH95crAE6MXHCCYGTNbkcxiS8XPa5L0luy79g4MeBsif+PI =6u7+
-----END PGP SIGNATURE-----

--
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/4e997252$0$13114$
Avatar
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 15/10/2011 13:40, Grégory Bulot a écrit :
renome ton fichier et ton cron en retirant l'extension (.sh)



Intérêt ?

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJOmXPTAAoJEK8zQvxDY4P9EokH+gLTQAM8vtrpZ+vWXskBS+ym
Jd53hCbDT5ggCO+UqZpgqzORabxWgGCS9ARjFcXN6OGQ+yiM+tVdE6VEdNS6XFVA
h/He+ZRlAi4Ra7a8kA4MAoiV0zwwJwhGTAMFRpdc4+PZ8qmlGhvKjSipk4YuzEtA
u3BtJpnqETrfjJLiun/bAZkahV+Lozk2hDATl4aipPA+BbhZm9hVBQPCHuGUuiH9
XsAaj6Vrbx/Q5Uxallkq7zdgOulRhY8Z670CmacFl8rDJEeKxW9CyibVFcGABdJH
c8Bet/8O0qs4eMKygkcGl2ZZRcAEE9UtEdut+0eGe+EMq3N7ao+fLdVC9+v/fUs =dRlq
-----END PGP SIGNATURE-----

--
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/4e9973d3$0$686$
Avatar
Grégory Bulot
Bonjour, Bonsoir,

Le Sat, 15 Oct 2011 13:51:47 +0200, Aéris, vous avez écrit :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 15/10/2011 13:40, Grégory Bulot a écrit :
> renome ton fichier et ton cron en retirant l'extension (.sh)

Intérêt ?



essaye tu verras avec extension le fichier mon_script.sh n'est pas
exécuté, mon_script lui le sera


--
Cordialement
Grégory BULOT

--
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
Aéris
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 15/10/2011 15:50, Grégory Bulot a écrit :
essaye tu verras avec extension le fichier mon_script.sh n'est pas
exécuté, mon_script lui le sera



Ça c'est pour les cron dans /etc/rc*
Qui sont lancés via run-parts
Qui défini bien une regexp de filtre des entrées

- ---------------------
$ man run-parts
Si ni l'option --lsbsysinit ni l'option --regex n'est
utilisée, alors les noms ne doivent comporter que des lettres ASCII
(minuscules ou majuscules), des chiffres ASCII, des tirets de
soulignement (« underscore ») ASCII ou des tirets (signes moins) ASCII.

Si l'option --lsbsysinit est utilisée, alors les noms ne doivent
pas se terminer par « .dpkg-old », « .dpkg-dist », « .dpkg-new » ou «
.dpkg-tmp » et doivent appartenir à un (ou plusieurs) des
ensembles de noms suivants :
- noms spécifiés par LANANA (^[a-z0-9]+$) ;
- noms hiérarchiques et réservés par LSB
(^_?([a-z0-9_.]+-)+[a-z0-9]+$) ;
- noms des scripts cron définis par Debian (^[a-zA-Z0-9_-]+$).

Si l'option --regex est utilisée, les noms doivent correspondre à
l'expression rationnelle spécifiée en tant qu'argument à cette option.
- ---------------------

Pour le cron direct dans la crontab, ça n'a aucune espèce d'importance :

$ cat foo.sh
#!/bin/bash
date >> foo.out

$ crontab -l
* * * * * /home/aeris/foo.sh

$ cat foo.out
samedi 15 octobre 2011, 16:42:01 (UTC+0200)
samedi 15 octobre 2011, 16:43:01 (UTC+0200)
samedi 15 octobre 2011, 16:44:01 (UTC+0200)

- --
Aeris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJOmZybAAoJEK8zQvxDY4P9uiQH/1QusJRBzT0Ctr/PQLyQA4yP
V5zo2tyr8gZiln8xo4sH2uHvo+GeKGKrhn4Y7/aIuWvxQ3tL7jTmbY7wh6FtiAE9
dyoQQOyV17IkW46ZX7H8fxTsw+C/E5qbUS6VGG74Q4Ud0b2eAfcA7T8kczyDJk9m
0+sSiD2apk7YBpNUtxa+GxdnYLnZI2iICDjiJsKhUdTqeXhrfEaTqRKpY3pVZrPB
5MHIvWOYiNyySt1I6ayl/flY4JPL2uDwhf8uc8JBUbt15Et4a9dIlnLGqKUjX1IP
j3/E2pirD9EJN6rybM+T+Mjqqv8yuyUnhMEOM77qMrcQuJ0slzzelblA03yUsI4 =yqIV
-----END PGP SIGNATURE-----

--
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/4e999ca5$0$641$
Avatar
fabrice régnier
merci à tous pour les pistes que vous m'avez suggérées:

@grégory
même en virant l'extension .sh, j'ai rencontré le même soucis

@aeris
ce n'est pas que le script plantait à cause des chemins vers les
binaires manquant, c'est qu'il ne se lançait pas.

@jean-yves
tu m'as fais espérer car lorsque j'ai remplacé le && par le if then fi,
le script s'est lancé. Sauf qu'il se lançait à chaque heure, le test ne
faisait plus son boulot.

@florent et denis
vous aviez raison, à priori un cron avec 'pgrep -f mon_prog && mon_prog'
ne peut jamais fonctionner. Avec l'option -f ou pas.

Ce qui fonctionne dans le cron, c'est par exemple un truc comme ça:
[ -z "$(/bin/ps -C pppd | /bin/grep pppd)" ] && /usr/bin/pon dsl-provider
ou (non testé)
[ -z "$(pgrep pppd)" ] && /usr/bin/pon dsl-provider

Mais dans ce cas, il s'agit d'aller chercher pppd. Or dans mon cas, je
vais chercher bash. Et après, comment déterminer le nom du script ?

Voici donc ma solution :

pas de pgrep dans le cron mais un:

# on redémarre les scripts s'ils sont arrêtés
0 * * * * /home/contact/verif_scripts_started.sh 1> /dev/null 2>
/dev/null


et voici verif_scripts_started.sh:

PGREP="/usr/bin/pgrep"

PROG1="/home/contact/acces_sitemap/acces_sitemap.sh"
if [ -z `$PGREP -f $PROG1` ]; then
$PROG1&
fi


Je pourrais faire un tableau pour tous les PROGi et une fonction qui
vérifie chaque PROGi.


encore merci à tous.

f.

--
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/4e99aa74$0$658$
Avatar
Jean-Yves F. Barbier
On Sat, 15 Oct 2011 17:44:51 +0200
fabrice régnier wrote:

...
@jean-yves
tu m'as fais espérer car lorsque j'ai remplacé le && par le if then fi,
le script s'est lancé. Sauf qu'il se lançait à chaque heur e, le test ne
faisait plus son boulot.



C'est exactement ce que ton crontab stipulait! (* */1 * * * == 1 x par H).

Restait une solution plus radicale (solution dépendante du traitement
exécuté par ledit script, qui doit pouvoir se faire couper la chi que
sans grogner, œuf-corse); appeler un script du type:

#!/bin/sh
killall monscriptamoiquejeveukitourn.sh
monscriptamoiquejeveukitourn.sh

J'utilise ce truc une fois par 12H avec bind9 s/s sid parce qu'au bout
d'un certain temps (très variable), il refuse de mourir sur ordre: à §a
bloque un reboot jusqu'à l'appui sur reset en envoyant "waiting for
pid nnnn to die" toutes les 2 secondes (bien que les confs soient correctes ).

--
<Addi> Alter.net seems to have replaced one of its router with a zucchini.

--
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/