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.ponzone@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/