Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/06/2007, 16h53   #1
Invité de passage
 
Inscription : juin 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 4
Points : 1
Points : 1
Par défaut concevoir un script

Bonjour,

je ne sais pas si je suis dans la bonne partie.

J'ai modifié le fichier syslog.conf afin qu'il puisse garder pendant un an les log du système principalement pour les log de mail donc j'aimerais concevoir un script permettant de supprimer les log supérieurs à 80 jours concernant "syslog" situé dans le répertoire /var/log/.

J'ai pensé faire un système de boucle for mais je ne pense pas que cela va marchait. D'après mes cours, une boucle for est de la forme :
Code :
1
2
3
4
5
 
for variable in liste_de_valeur
do
commande
done
Merci d'avance.

Cordialement.
ptispirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 18h14   #2
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 497
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 497
Points : 9 677
Points : 9 677
Bonjour,

Pour ce qui est du choix du forum, pas de soucis :-)

Pour ce qui est du script, il faut que tu saches qu'il existe déjà une commande qui parcourt un ou plusieurs répertoire à la recherche de fichiers : find

Attention toutefois, car cette commande est complexe à utiliser - mais très puissante en contre-partie.

Je te conseil donc de bien lire le man de la commande find.

Une fois que tu l'auras lu, fais des essais pour voir comment tu pourrais lister tous tes fichiers.
Une fois que tu auras ca, cherche à voir comment tu pourrais te limiter à l'affichage des fichiers que tu souhaites supprimer (ceux qui ont plus de X jours)
...

N'hésites pas à poser des questions si tu bloques sur un point.

Bon courage,
Gangsoleil
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 09h29   #3
Invité de passage
 
Inscription : juin 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 4
Points : 1
Points : 1
Merci pour le lien du man de la commande find ^^

je pense avoir réussi trouver comment faire :

Code :
1
2
3
4
 
#!/bin/bash
 
find /var/log/syslog* -mtime +80 -exec rm -f
il me manque un ou des arguments pour l'action "-exec" malgrès le man je n'ai pas compris quel genre d'argument(s) il manque.

Cordialement.
ptispirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 10h01   #4
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 497
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 497
Points : 9 677
Points : 9 677
Citation:
Envoyé par ptispirou
Code :
1
2
3
4
 
#!/bin/bash
 
find /var/log/syslog* -mtime +80 -exec rm -f
Jusqu'ici, tout semble aller bien ;-)

En fait, l'option -exec n'est pas forcément la plus simple, donc voici deux-trois infos pour l'utiliser :

Pour indiquer l'endroit où tu veux que le nom des fichiers soit mis, il faut utiliser "{}".
Ensuite, pour indiquer que ta commande est finie, il faut le faire via "\;". Le '\' est là pour indiquer que ce caractère doit être interprété par la commande find, et non par le shell.

Ce qui nous donne :
Code :
1
2
 
find [...] -exec <ta_commande> <les_options de ta commande> {} \;
Deux exemples pour que tu comprennes mieux :
Rechercher tous les fichiers contenant la chaine toto :
Code :
find . -exec grep  "toto" {} \;
Rechercher tous les fichiers texte de mon répertoire, et les concaténer dans /tmp/toto.txt :
Code :
find ~ -name "*.txt" -exec cat {} >> /tmp/toto.txt \;
En espérant que ce soit plus clair maintenant.
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 10h15   #5
Invité de passage
 
Inscription : juin 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 4
Points : 1
Points : 1
Oui cela est plus clair

Je te remercie pour tes explications
ptispirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 11h24   #6
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 776
Points : 7 776
Code :
find /var/log/syslog* -mtime +80 -exec rm -f {} \;
exactement

quand a son execution reguliere le plus simple est de planifier cette commande dans le crontab plustot que de faire un script.

ligne de crontab :
Code :
0 0 * * 1 find /var/log/syslog* -mtime +80 -exec rm -f {} \;
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 15h39   #7
Invité de passage
 
Inscription : juin 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 4
Points : 1
Points : 1
C'est vrai que pour mon utilisation c'est plus simple de le planifier.

Je te remercie pour ton conseil
ptispirou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h29.


 
 
 
 
Partenaires

Hébergement Web