Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 big_smile

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

Gojita a écrit :

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

Gojita a écrit :

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 big_smile

Dernière modification par barret (Le 15/11/2007, à 23:49)

Hors ligne