Attention en revanche, 2>&1 >/dev/null n'a pas l'effet escompté !
L'ordre de redirection importe : celle ci-dessus va d'abord brancher stderr
sur là où pointe stdout (donc le terminal), *puis* rediriger stdout vers
/dev/null (mais sans toucher à stderr !).
La bonne solution est >/dev/null 2>&1

Cf https://github.com/koalaman/shellcheck/wiki/SC2069 et
https://mywiki.wooledge.org/BashFAQ/055
(PS : Shellcheck c'est le feu)

Thomas


Le ven. 3 déc. 2021 à 19:55, David Ponzone <david.ponz...@gmail.com> a
écrit :

> Vincent,
>
> Merci t’es le meilleur, j’ai oublié que crontab utilisait /bin/sh par
> défaut, comme moi j’utilise bash sur root (et je redéfinis généralement
> SHELL dans la crontab, mais pas celle-là…)
> Ce qui est évidemment déroutant, c’est pourquoi 0.2% du temps seulement
> j’ai un email, alors que le source C envoie tout le temps à stderr, mais tu
> dois avoir raison, il doit y avoir un truc pas tout à fait
> atomique/linéaire dans l’exécution.
>
> Effectivement, je vais repasser sur la syntaxe POSIX, rappelée par
> Wallace, ça sera plus propre.
>
> Je savais que ça irait vite!
>
> Merci
>
>
> > Le 3 déc. 2021 à 19:38, Vincent Tondellier via FRsAG <frsag@frsag.org>
> a écrit :
> >
> > On vendredi 3 décembre 2021 19:21:12 CET, Wallace wrote:
> >> avec >&/dev/null tu ne rediriges pas stderr
> >
> > Avec bash, csh, ou zsh, si :
> >
> https://wiki.bash-hackers.org/syntax/redirection#redirecting_output_and_error_output
> >
> > Mais avec dash qui est plus posix de base (le /bin/sh par défaut sous
> debian), c'est interprété comme "script   &   : >/dev/null"
> >
> > exemple :
> >
> > $ echo $SHELL
> > /bin/zsh
> > $ ls good bad &>/dev/null
> > $
> > $ readlink /bin/sh
> > dash
> > $ /bin/sh
> > $ ls good bad &>/dev/null
> > $ ls: impossible d'accéder à 'good': Aucun fichier ou dossier de ce type
> > ls: impossible d'accéder à 'bad': Aucun fichier ou dossier de ce type
> >
> > [1] + Done(2)                    ls good bad
> > $
> >
> >
> > Donc c'est bien possible que de temps en temps, le script ne passe pas
> en tache de fond avant la fin du cron et affiche quelque chose
> >
> >> Pour rediriger stderr tu devrais avoir 2>&1 > /dev/null
> >
> > et ca c'est la syntaxe portable.
> >
> > On vendredi 3 décembre 2021 19:07:15 CET, David Ponzone wrote:
> >> Soit une Debian 9.5. Soit un script bash qui est lancé par crontab 1440
> fois par jour.
> >> Dans la crontab, le script est lancé ainsi:
> >>
> >> */1 * * * * script >&/dev/null
> >>
> >
> > _______________________________________________
> > Liste de diffusion du FRsAG
> > http://www.frsag.org/
>
> _______________________________________________
> Liste de diffusion du FRsAG
> http://www.frsag.org/
>
_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/

Répondre à