PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Wodric : Commande grep : Rechercher une aiguille dans un système

lundi 2 janvier 2017 à 18:20

L’article qui suit traite de la commande grep ; l’objectif est de montrer ces fonctionnalités avec quelques explications et pas mal d’exemples. Sur le thème des commandes Linux, vous pouvez retrouver un autre article sur la commande find.

L’ensemble des exemples ont été mis en place et effectué sur mon Linux Mint 18. Ma version de grep est la GNU 2.25.

Petit rappel, la commande grep qu’est ce que c’est ?

Grep est une commande qui permet de faire des recherches de chaînes de caractères dans un flux de texte (fichier ou sortie d’une autre commande, par exemple) et elle accepte les expressions régulières.

Il en existe plusieurs variantes, par exemple :

On en trouve d’autres avec chacune ces spécificités (egrep, fgrep, tcgrep, pgrep).

Exemples

La base

L’utilisation générale de la commande grep se fait de la manière suivante:

grep options "recherche" chemin

Avec :

Les guillemets autour du terme à rechercher ne sont pas obligatoire. Néanmoins je les conseils dès lors qu’il y a des caractères autres qu’alphanumériques dans votre recherche.

Voici quelques utilisations possible :

# recherche "192" dans le fichier hosts
grep "192" /etc/hosts
# recherche du terme ip dans le répertoire de configuration de apache2
grep "ip" /etc/apache2/conf.d/*
# recherche des lignes d'erreurs dans des fichiers de logs
grep "ERROR" ./tomcat/log/*.log

Comme vous pouvez le voir, il est possible d’utiliser des patterns afin de cibler, par exemple, un type de fichier ou l’ensemble des fichiers d’un répertoire.

Il est aussi possible d’utiliser des expressions régulières dans le terme de recherche

# recherche des suites de 10 chiffres dans tous les fichiers du répertoire courant
grep "[0-9]\\{10\\}" *

Je ne suis pas un expert en expressions régulières et je ne souhaite pas dire de bêtises, je vous fournis donc un lien intéressant pour bien débuter avec les expressions régulières. Il existe également des sites webs permettant de s’entrainer avec les expressions régulières.

Les options les plus utiles

Voici une liste non exhaustive des options les plus utiles :

Il existe d’autres options bien entendu, si vous êtes curieux je vous invite à poursuivre vos recherches au-delà de cet article.

Exemples d’utilisations des options

Voici un exemple d’utilisation en image des options -n (numéro de ligne), -i (casse) et –color :

Grep options
grep -n -i –color

Il était 23 h lorsque je fais cette petite démonstration, je n’étais pas particulièrement inspiré ;).

Maintenant d’autres exemples plus fonctionnels, mis en contexte.

# recherche la configuration des workers (loadblancing) dans apache, récursivement
grep -r "worker" /etc/apache2/
# la même chose en couleur
grep -r --color "worker" /etc/apache2
# on complète en affichant les numéros de ligne concernés
grep -rn --color "worker" /etc/apace2

Autres exemples pour récupérer les lignes autours d’un terme recherché :

# recherche d'erreur dans des logs Java, en affichant la source d'erreur (3 lignes suivants l'erreur)
grep --color -A3 "ERROR" /opt/tomcat/logs/*.log
# même chose mais en remontant les 3 lignes précédents l'erreur
grep --color -B3 "ERROR" /opt/tomcat/logs/*.log
# même chose avec 3 lignes avant et après
grep --color -A3 -B3 /opt/tomcat/logs/*.log
# c'est l'équivalent de 
grep --color -C3 /opt/tomcat/logs/*.log

Une autre petite image afin que l’option -w soit plus clair :

Option word grep
grep -w

Voici un exemple pour l’option -c :

# compter les occurences d'un mot par fichier dans le répertoire de log du système
grep -c "word" /var/log/*
# la même chose en ignorant la casse
grep -ci "word" /var/log/*
# de manière récursive dans les sous répertoires
grep -rci "word" /var/log/*

Utilisation des opérateur OR, AND et NOT

Voici des exemples avec l’opérator OR, qui permet de recherche plusieurs termes disjointement.

# recherche des termes ERROR et CRITICAL dans les logs
grep  "ERROR\\|CRITICAL" /opt/tomcat/log/*.log
# même chose avec l'option -E qui gère l'utilisation étendu des regex
grep -E "ERROR|CRITICAL" /opt/tomcat/log/*.log
# il y a également l'option -e
grep -e "ERROR" -e "CRITICAL" /opt/tomcat/log/*.log
# egrep est équivalent à grep -E
egrep "ERROR|CRITICAL" /opt/tomcat/log/*.log

Pour faire un AND, il est nécessaire d’utiliser les pipes.

Rappel : un pipe permet d’utiliser la sortie d’une commande pour l’appliquer à l’entrée d’une autre.

Dans l’exemple ci-dessous, l’objectif est de rechercher les NullPointerException parmi les erreurs dans la log d’un Tomcat

# On filtre les logs sur le mot error, puis on filtre le résultat pour rechercher les NullPointerException
grep -E "ERROR" /opt/tomcat/log/*.log | grep -E "NullPointerException"
# La commande suivante offre le même résultat
grep "ERROR" /opt/tomcat/log/*.log | grep "NullPointerException"

Enfin, pour utiliser la négation logique , il faut utiliser l’option -v, par exemple :

# recherche les lignes sans le mot démonstration
grep -v "démonstration" *.txt
# recherche les erreurs qui ne sont pas des NullPointerException
grep "ERROR" /opt/tomcat/log/*.log | grep -v "NullPointerException"

Utiliser la commande grep comme un filtre

Dans les faits, la commande grep est autant utilisée pour faire de la recherche brut dans des fichiers que pour filtrer le résultat d’autres commandes. Lorsque vous utilisez une commande verbeuse, il est intéressant de filtrer le résultat de cette commande pour obtenir uniquement l’information souhaitée.

Par exemple, avec la commande « ps » qui retourne la liste des process à l’instant sur la machine. Elle retourne souvent plusieurs centaines de lignes, un grep sur le nom du process à rechercher fait des miracles!

Voici plusieurs exemples en image :

Grep comme filtre
Grep comme filtre

A votre tour

Le meilleur moyen d’apprécier l’utilisation des commandes et leurs puissances est de s’y essayer. La prochaine fois que vous avez une recherche à faire, prenez votre courage à deux mains pour vous lancer.

Si vous êtes déjà un habitué de son utilisation, vous pouvez partager vos tips aux autres lecteurs en commentaire. J’essayerai de les ajouter à l’article.

Pour finir

Nous avons vu une bonne partie des fonctionnalités de la commande grep, pour creuser le sujet je vous invite à essayer par vous-même et vous référer au manuel utilisateur. Il existe également de très nombreuses sources anglophones que vous trouverez dans n’importe quel moteur de recherche.

J’espère ne pas attendre 1 an pour sortir le prochain article sur une nouvelle commande (sed et/ou awk).

N’hésitez pas à me laisser un feedback sur cet article en attribuant une note (système d’étoiles en dessous de l’article) ou en me commentant vos impressions. Et si vous l’avez apprécié, vous pouvez également le partager pour mon plus grand plaisir ;).

Sources:

 

The post Commande grep : Rechercher une aiguille dans un système appeared first on Wodric.

Gravatar de Wodric
Original post of Wodric.Votez pour ce billet sur Planet Libre.

Journal du hacker : Liens intéressants Journal du hacker semaine #52

lundi 2 janvier 2017 à 00:01

Pour la 52ème semaine de 2016, voici 5 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Ilphrin : Faire marcher une carte hybride sous Linux

lundi 2 janvier 2017 à 00:00

J’ai un HP Elitebook 840, qui possède un système de carte graphique dite “hybride”, pour les besoins de mes études. Après deux ans j’ai enfin réussi à la faire fonctionner, et je me suis dis que j’allais partager ma méthode

Pour détailler un peu, j’ai:

Bien sûr, je n’utilise pas cet ordinateur que pour mes cours vu que c’est mon seul PC portable. L’utilisation la plus gourmande que j’ai vient des jeux vidéos. Souvent ce sont des jeux qui ne demandant pas grand-chose comme Osu, Dungeon Crawl Stone Soup, ou Beyond Divinity.

Mais certains jeux ont plus de demandes, comme Doom 3 ou Path Of Exile (jouant à ce dernier fréquemment), et là la performance baisse énormément, avec des piques descendant à 1 image toutes les 2-3 secondes.

Je ne me suis que rarement posé la question puisque je joue à tous ces jeux par le biais de Wine et PlayOnLinux, qui rajoute une couche de complexité et de travail pour l’ordinateur. Seulement depuis 3 mois j’ai eu envie d’investiguer un peu sur les performances de mon pc et j’ai découvert une chose intéressante

sudo cat /sys/kernel/debug/vgaswitcheroo/switch

0:DIS: :DynOff:0000:03:00.0
1:IGD:+:Pwr:0000:00:02.0
2:DIS-Audio: :Off:0000:03:00.1

Cette commande permet d’afficher l’état des deux cartes graphiques sur un pc hybride

Dans la sortie de la commande plus haut on voit que la DIScrete est DynamicallyOFF, ce qui est normal puisque je ne fais aucun traitement particulier. Le souci c’est que quoique je fasse je n’arrivais pas à l’activer. Jusqu’à maintenant (petit teaser ;)).

Il faut d’abord rajouter une configuration dans votre xorg.conf:

Section "Device"
  Identifier "Radeon"
  Driver "intel"
    Option "AccelMethod" "UXA"
    Option "SwapbuffersWait" "false"
    Option "VSync" "false"
    Option "DRI" "3"
EndSection

Section "Device"
  Identifier "Radeon"
  Driver "radeon"
    Option "SwapbuffersWait" "false"
    Option "TearFree" "false"
    Option "DRI" "3"
EndSection

On redémarre, et maintenant on peut forcer l’utilisation de la carte graphique sur une commande en mettant une variable d’environnement:

DRI_PRIME=1 macommande

Maintenant je peux jouer à Path Of Exile sans trop ramer ;)

Je ne sais pas si ça marche pour tous les pc portables avec une carte hybride Intel/Radeon, et surtout je n'ai pas testé toutes les combinaisons de configuration. C'est un amalgame d'informations trouvées sur StackOverflow, le bug tracker de Xorg, et d'autres recherches Google. N'hésitez pas à me dire ce qui à marché pour vous je vais essayer de faire une partie "Note" sur le site pour stocker ce genre d'astuces

Gravatar de Ilphrin
Original post of Ilphrin.Votez pour ce billet sur Planet Libre.

Tuxicoman : Changer la résolution d’une vidéo avec FFMPEG sous Linux

dimanche 1 janvier 2017 à 08:49

J’ai pris une vidéo avec mon smartphone Android mais j’ai oublié de choisir la bonne résolution. Bilan, la vidéo est haute qualité (3840×2160 pixels) et fait 500Mo pour 2 min de film. Impossible à envoyer par Internet.

Pour réduire le poids du fichier, on va alors réduire la résolution de la vidéo.

Avec le logiciel FFMPEG, on peut redimensionner la vidéo en une seule ligne de commande.
$ ffmpeg -i input.mp4 -vf scale=960:-1 output.mp4

960 est ici la largeur en pixels désirée pour le fichier de sortie. Pour ne pas trop altérer la qualité, il faut choisir une valeur qui soit une division de la largeur du fichier originale par un multiple de 2 (ici 960 = 3840/2/2)

Bilan, la vidéo fait maintenant 960x540px et fait 23Mo. Pratique !

Related Posts:

Gravatar de Tuxicoman
Original post of Tuxicoman.Votez pour ce billet sur Planet Libre.

Articles similaires

cm-t : Le dernier épisode de la saison 1

samedi 31 décembre 2016 à 23:59
Le dernier épisode de la saison 1

 

L’actualité

Prédiction

Rudy

Quesh

cm-t: 3

quesh: 3

C’est la fin de la saison 1

On a bien lu vos commentaires (merci encore fred d’ailleurs), continuez d’en laisser, on les prend vraiment en compte.

Sur ce, on va se laisser le mois de janvier pour retravailler certains points, on publiera cependant peut-être des hors série. En attendant, vous pouvez continuer de nous suggèrer des actu sur /r/ubuntuFr.

Gravatar de cm-t
Original post of cm-t.Votez pour ce billet sur Planet Libre.