#1 Le 14/11/2007, à 11:38
- barret
[bash] Un petit script pour une edition des dernieres lignes d'un log
Bonjour tous le monde,
Je dois créer un script qui permet de faire plein de chose mais une partie dont je n'arrive pas a voir le bout.
Voici le premier script (juste pour info) qui est exécuté par crontab toutes les X minutes:
#!/bin/bash
##echo "*********************************************" >> cputimeuse.log
echo -n "`date '+%F %H:%M'` " >> cputimeuse.log
##echo -n "`date '+%Y %m %d %H:%M'` " >> cputimeuse.log
ps -eo pcpu,pid,user,comm | sort -gr | head -n 1 >> cputimeuse.log
Voici le log en question
2007-11-14 10:52 1.7 5166 root Xorg
2007-11-14 10:55 2.0 5166 root Xorg
2007-11-14 10:56 3.9 5950 gaetbolo kate
2007-11-14 10:57 2.0 5965 gaetbolo sh
2007-11-14 10:58 1.7 5166 root Xorg
2007-11-14 10:59 1.5 5166 root Xorg
2007-11-14 11:00 1.4 5166 root Xorg
2007-11-14 11:01 1.3 5166 root Xorg
2007-11-14 11:02 1.2 5166 root Xorg
2007-11-14 11:03 1.2 5166 root Xorg
2007-11-14 11:04 1.1 5166 root Xorg
2007-11-14 11:05 1.2 5166 root Xorg
2007-11-14 11:06 1.2 5166 root Xorg
2007-11-14 11:07 1.1 5166 root Xorg
2007-11-14 11:08 1.1 5166 root Xorg
2007-11-14 11:09 1.0 5166 root Xorg
2007-11-14 11:10 23.6 6169 gaetbolo kwrite
2007-11-14 11:11 1.1 6169 gaetbolo kwrite
2007-11-14 11:12 1.1 5166 root Xorg
2007-11-14 11:13 1.1 5166 root Xorg
2007-11-14 11:14 1.1 5166 root Xorg
2007-11-14 11:15 1.1 5166 root Xorg
2007-11-14 11:16 1.1 5166 root Xorg
2007-11-14 11:17 1.1 5166 root Xorg
2007-11-14 11:18 1.1 5166 root Xorg
2007-11-14 11:19 2.0 6331 gaetbolo sh
2007-11-14 11:20 1.3 5166 root Xorg
2007-11-14 11:21 26.3 6454 gaetbolo soffice.bin
2007-11-14 11:22 34.4 6521 gaetbolo soffice.bin
2007-11-14 11:23 3.6 6565 gaetbolo soffice.bin
2007-11-14 11:24 1.5 6565 gaetbolo soffice.bin
2007-11-14 11:25 1.4 5166 root Xorg
2007-11-14 11:26 2.0 6624 gaetbolo sh
2007-11-14 11:27 1.4 5166 root Xorg
2007-11-14 11:28 1.4 5166 root Xorg
2007-11-14 11:29 1.4 5166 root Xorg
2007-11-14 11:30 2.0 6678 gaetbolo sh
2007-11-14 11:31 1.4 5166 root Xorg
2007-11-14 11:32 1.4 5166 root Xorg
2007-11-14 11:33 1.4 5166 root Xorg
Et voici le fameux script qui fait plein de chose:
#!/bin/bash
#Script exercice 10 du TD3
select choix in "Afficher les 5 processus les plus gourmand àƒ une date X" "Afficher les 5 processus les plus gourmand àƒ une date X et une heure H" "Afficher la derniere heure du log" "Visualiser les log de la veille" "Afficher les 5 processus les plus gourmand àƒ une date X d'un utilisateur Y" "Afficher les 5 processus les plus gourmand àƒ une date X et une heure H d'un utilisateur Y" "Afficher le log d'un processus de la veille" "Edition des N derniàƒÂ©res ligne" "Archiver la journàƒÂ©e J" "Vider le fichier log àƒ partir de la date D" "Quitter"
do
case $REPLY in
1)
echo "tata" ;;
2)
echo "toto" ;;
3)
echo "titi" ;;
4)
echo dodo ;;
5)
echo dodo ;;
6)
echo dodo ;;
7)
echo dodo ;;
8)
echo toto ;;
9)
echo toto ;;
10)
echo tutu ;;
11)
break ;;
*)echo "Mauvais choix!" ;;
esac
done
La pour l'instant, il est vide, mais c'est surtout la partie "Edition des N derniàƒÂ©res ligne" qui m'embete.
Comment je peux éditer les n dernières ligne de mon fichier log cputimeuse?
Merci par avance
Dernière modification par barret (Le 14/11/2007, à 11:39)
Hors ligne
#2 Le 14/11/2007, à 11:58
- Gojita
Re : [bash] Un petit script pour une edition des dernieres lignes d'un log
tail -5 tu retournes les 5 dernières ligne
Il y a 10 sortes de personnes
Celles qui savent compter en binaires et les autres.
Hors ligne
#3 Le 14/11/2007, à 13:45
- barret
Re : [bash] Un petit script pour une edition des dernieres lignes d'un log
tail -5 tu retournes les 5 dernières ligne
Serait il possible d'avoir plus de precision?
Car je vois bien un truc du genre:
tail -n X cputimeuse.log > temp.log #X etant un nombre entré au clavier
vi temp.log
*************** #Comment supprimer ces X lignes?
temp.log >> cputimeuse.log
Mais comment supprimé les X dernières lignes?
Dernière modification par barret (Le 14/11/2007, à 13:46)
Hors ligne
#4 Le 14/11/2007, à 16:38
- Gojita
Re : [bash] Un petit script pour une edition des dernieres lignes d'un log
En fait, tu veux quoi ?
Tu veux 'éditer les X dernière ligne' ou supprimmer les X dernières lignes ?
Il y a 10 sortes de personnes
Celles qui savent compter en binaires et les autres.
Hors ligne
#5 Le 14/11/2007, à 17:57
- barret
Re : [bash] Un petit script pour une edition des dernieres lignes d'un log
En fait, tu veux quoi ?
Tu veux 'éditer les X dernière ligne' ou supprimmer les X dernières lignes ?
Je veux editer les X dernieres ligne
Hors ligne
#6 Le 14/11/2007, à 18:30
- abetsic
Re : [bash] Un petit script pour une edition des dernieres lignes d'un log
Regardes du coté de sed alors pour éditer un fichier automatiquement.
Si tu veux qu'on t'aide il faut également être plus précis sur ce que tu veux faire.
Hors ligne
#7 Le 14/11/2007, à 19:08
- Gojita
Re : [bash] Un petit script pour une edition des dernieres lignes d'un log
bein comme tu dis:
tail -X <fichier> > /tmp/temp
vi /tmp/temp
Il y a 10 sortes de personnes
Celles qui savent compter en binaires et les autres.
Hors ligne
#8 Le 15/11/2007, à 23:31
- barret
Re : [bash] Un petit script pour une edition des dernieres lignes d'un log
Voici comment j'ai procédé:
echo "Entrez le nombre de lignes à éditer:"
read n #Saisie du nombre de ligne à éditer
echo "nombre de lignes du fichier:"
wc -l cputimeuse.log > ligne.log
nbligne=`awk -F " " '{print $1}' ligne.log` #On stock le nombre de ligne du fichier log
debutligne=`expr $nbligne - $n` #On soustrait du nombre total de ligne, le nombre de ligne a éditer
echo $nbligne
tail -n $n cputimeuse.log > temp.log #On récupère les n dernieres lignes dans un fichier temporaire
head -n $debutligne cputimeuse.log > temp2.log #On récupère le fichier log moins les n lignes
vi temp.log #On édite les n lignes
cat temp2.log > cputimeuse.log #On remplace le fichier log par son debut
cat temp.log >> cputimeuse.log #On concatène les lignes éditées
rm temp.log temp2.log ligne.log;; #On supprime les fichiers temp
Ca fait un peux barbare, mais ca fonctionne
Dernière modification par barret (Le 15/11/2007, à 23:49)
Hors ligne