BASH date heure dans redirection d'erreur

Fermé
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 - 27 oct. 2008 à 12:36
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 27 oct. 2008 à 23:08
Bonjour,

Lors de l'appel des mes script, je redirige la sortie d'erreur vers un fichier

/toto.sh 2>>/chemin/erreurs_toto.logs

Comment pourrais-je avoir une date_heure ajoutée automatiquement lors des ajouts dans le fichier erreurs_toto.logs ?

En vous remerciant.

Stéphane

6 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
27 oct. 2008 à 12:53
hello
/toto.sh 2>&1 | awk ' {system("date");print $0}' >>/chemin/erreurs_toto.logs
1
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 2
27 oct. 2008 à 18:42
bonjour,

ça me parait être la bonne voie, cependant j'ai l'erreur suivante :

-bash: awk{system("date");print $0}: command not found

avec la commande :

/chemin/super_script.sh >/dev/null 2>&1 | awk'{system("date");print $0}'>>/chemin/erreurs_super_script.log


AU SECOURS ....

Stéphane
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 oct. 2008 à 18:49
Salut,

1. dans le script
lami20j@debian:~/trash$ cat ccm.sh
#!/bin/bash

echo -e "$(date); \c"
echo salut
lami20j@debian:~/trash$ sh ccm.sh >> erreur.log
lami20j@debian:~/trash$ cat erreur.log
lundi 27 octobre 2008, 18:46:31 (UTC+0100); salut
lami20j@debian:~/trash$
2. avec awk
lami20j@debian:~/trash$ cat ccm.sh
#!/bin/bash
echo salut
lami20j@debian:~/trash$ cat erreur.log
lundi 27 octobre 2008, 18:46:31 (UTC+0100); salut
lami20j@debian:~/trash$ sh ccm.sh|awk ' {system("date");print $0}' >> erreur.log
lami20j@debian:~/trash$ cat erreur.log
lundi 27 octobre 2008, 18:46:31 (UTC+0100); salut
lundi 27 octobre 2008, 18:49:12 (UTC+0100)
salut


1
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 2
27 oct. 2008 à 19:08
En combinant vos 2 réponses, j'ai compris mon erreur, il manquait un espace .. entre 'et { :

/chemin/super_script.sh >/dev/null 2>&1 | awk ' {system("date");print $0}'>>/chemin/erreurs_super_script.log


Pour répondre à lami20j, ta solution correspond à récupérer le stout, ce qui ne m'interresse pas ! d'où le >/dev/null
Seules les erreurs m'interessent. Par contre si je souhaite débugger mon script, je remet le stout dans la console et je vois le déroulement avant les erreurs.

Ce système permet de visualiser d'un coup d'oeil les erreurs et seulement les erreurs dans le log !

Merci à tous les 2 !!

Stéphane
1
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 oct. 2008 à 23:08
Re,

Ah, d'accord, je n'ai pas vu que seulement STDERR t'intéresse ;-)
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 oct. 2008 à 12:45
Salut,

tu ajoutes au début de ton script
echo -e "$(date)\c"
--
106485010510997108
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 2
27 oct. 2008 à 12:52
bonjour lami20j,

Je comprend bien que :

echo -e "$(date)\c"


Ajouterais la date à la sortie standard mais moi je veux ajouter la date heure dans le fichier d'erreur ... lors de la redirection d'une erreur.

Je veux avoir la date heure de chaque erreur, tu noterras le double >> dans ma redirection pour conserver une trace des erreurs ...

Merci d'avance.

Stéphane
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 oct. 2008 à 12:54
Salut,

ben si tu ajoutes la commande à l'intérieur de ton script (au début)
STDOUT grâce à >> sera écrit dans le fichier et pas sur écran
#!/bin/bash

echo -e "$(date)\c"

# ton code
--
106485010510997108
0