Vous n'êtes pas identifié.
Bonjour,
Il est souvent utile d'inscrire dans un fichier log ce qui se passe dans un script. Heureusement une commande est là pour nous faciliter la tâche.
Par exemple si vous avez un script dans ce style :
#/bin/bash
echo "Backup de mes bases de donnée en cours..."
mysqlhotcopy --user=root --allowold --regexp=".*" /root/monbackup
echo "Backup terminé."
logger -t BACKUP "Les bases de données ont été sauvegardées correctement"
Un coup d'oeil dans /var/log/messages pour constater le résultat.
Hors ligne
Oui, et comme les fichiers de log ont la facheuse tendance à prendre très vite beaucoup de place voici de quoi les vider:
bash#find /tmp ! -type d -atime +2 -exec rm -f {} ;
Attention, les espaces sont très importants, s'il en manque on aura un message d'erreur (je suggère de faire un copier coller de ce qui se trouve après le #).
Bon, je donne un petit explicatif de la ligne de commande (je m'ennuie en peu ce soir):
-exec = exécute la commande suivante sur chaque fichier sélectionné
rm -f {} = supprime les fichiers, les deux accolades signifiant qu'il faudra traiter ainsi chaque fichier rencontré
; = ces caractères marquent la fin de l'option -exec
! = le point d'exclamation est une négation, il concerne le paramètre suivant que est lui même -type d, ce qui signifie "répertoire"
Hors ligne
Pour vider les fichiers logs tu peux aussi faire un simple pipe du genre
cat /dev/null > fichier.log
Hors ligne
En effet, le but était en fait de virer tous les fichiers log qui avaient plus de 2 jours (j'ai malencontreusement oublié de le dire).
Hors ligne
On peut aussi archiver les logs avant de les effacer. Etant donné que les logs ne contiennent que du texte le taux de compression est très élevé.
exemple :
find /var/log ! -type d -size +10240k -name "*.log" -exec tar cfj archive.tar.bz2 {} ; find /root ! -type d -size +10240k -name "*.log" -exec rm -f {} ;
En claire :
cherche dans /var/log tout les fichiers qui ne sont pas des répertoires ET qui sont supérieur à 10M ET dont le suffixe est .log puis fait une archive que tu compresseras avec bzip2. ENSUITE fait la même recherche et efface les fichiers.
Question --> comment exécuter plusieurs commandes succesivement avec -exec ?
comment utiliser une redirection (>, >> ), dans -exec?
Hors ligne
au lieu de "! -type d" on peut faire directement "-type f" non ?
Pour exec il me semble qu'elle peut faire qu'une commande à la fois par contre tu peux utilisé les "> >>" avec le tar et même utiliser "--exclude" et "--exclude-from" des fois c'est utile
Hors ligne
au lieu de "! -type d" on peut faire directement "-type f" non ?
Absolument.
Hors ligne
Bonjour,
Il m'arrive de vouloir savoir ce qu'il se passe sur ma machine durant une petite durée ( p. ex. une nuit).
Je lance dans le cron la commande suivante :
ps aux --sort -%cpu | head -n 11 > ps/`date +%Y-%m-%d-%Hh%Mm%Ss`
qui me donnera une liste des 10 plus gros pompeurs de CPU.
La sortie sera inséré dans un fichier dont le nom sera la date à laquelle la commande a été effectuée(clair?).
J'utilise ce système lorsque je cherche des processus qui font monter mes graphs mrtg durant la nuit.
Hors ligne