Le blog de Fatiha

Une geek de plus !

Ne pas afficher les noms de fichiers dans les résultats d’un grep

 

Si vous souhaitez rechercher un motif dans plusieurs fichiers, un grep classique vous renverra le résultat suivant :

/répertoire/fichier1:ligne contenant le motif recherché

/répertoire/fichier2:ligne contenant le motif recherché

/répertoire/fichier3:ligne contenant le motif recherché

Ensuite, si vous souhaitez parser ces lignes, cela devient un peu plus difficile. Du coup, mieux vaut ne pas afficher du tout les noms de fichiers au début de la ligne. Cela est possible avec l’option -h :

-h, –no-filename

Ne pas afficher le nom des fichiers dans les résultats lorsque plusieurs fichiers sont parcourus.

Source : man grep

Linux : Comment récupérer des lignes avant et après un mot-clé dans un fichier ?

 

Vous souhaitez rechercher des lignes bien précises dans un ou plusieurs fichiers. Mais vous voulez aussi récupérer des lignes avant ou après le mot-clé. Une commande suffit pour cela et vous la connaissez déjà, c’est la commande grep. Il suffit de lui ajouter quelques options et le tour est joué.

Les options en question sont :

- A pour rechercher « AFTER » après le mot-clé

- B pour rechercher « BEFORE » avant le mot-clé

Rien ne vaut un exemple.

Ci-dessous le contenu du fichier test :

Voyez par vous-même :

Pour avoir plus d’informations sur la commande grep, tapez man grep dans votre console Linux.

(Un grand merci à mon collègue)

Effectuer une recherche dans des fichiers compressés au format bzip2

 

Vous souhaitez effectuer une recherche rapide sur des fichiers compressés au format bzip2 sous Linux. Vous ne voulez pas forcément les décompresser. J’ai une solution pour vous, la commande bzcat peut vous aider.

bzcat monFichierCompresse.bz2 | grep -rni « maRecherche »

Cela vous fera gagner du temps à coup sûr.

Pour en savoir plus, comme d’habitude je vous conseille de taper : man bzcat

Linux : Vérifier qu’un script lancé en background tourne bien

 

Admettons que je lance un script en arrière-plan sous Linux :

nohup myScript &

Je souhaite savoir s’il tourne correctement, dans ce cas, je lance les commandes ci-dessous.

while :

do

     ps -aux | grep 12526 | awk ‘{ print $8 }’ | grep R

     sleep 1

done

Je vais les décomposer :

  • boucle while
  • récupération de la liste des process en cours
  • filtrage selon le PID du script, exemple 12526
  • affichage de la colonne numéro 8 contenant le « process state code » (R+)
  • on fait une pause d’une seconde : sleep 1
  • filtrage selon l’état « running » du process

Voilà ce que j’obtiens toutes les secondes si mon script tourne bien :

R+

R+

R+

Pour en savoir plus, il suffit de taper un man ps sur sa console Linux.

Calculer rapidement le nombre de fichiers d’un répertoire courant sous Linux

 

Pour calculer rapidement le nombre de fichiers d’un répertoire courant sous Linux, cela se fait via une ligne de commande.

  • Se positionner à la racine du répertoire en question
  • Lancez la commande ls -lR * | grep ^- | wc -l

Cette commande combine :
- la commande ls pour lister, l’option R sert à parcourir les répertoires
- la commande grep pour n’afficher que les lignes commençant par un -, à savoir les fichiers. En effet, les répertoires commencent par la lettre d quand on les liste avec un ls.
- la commande wc qui sert à compter les lignes quand elle est utilisée avec l’option l

ls -lR * | grep ^- | wc -l

  • Cas pratique

Dans /tmp, je crée un répertoire test :
cd /tmp
mkdir test

Puis, je crée 5 répertoires :
cd test
mkdir rep1 rep2 rep3 rep4 rep5

Je crée 3 fichiers dans le répertoire 1
cd rep1
touch fic1 fic2 fic3

Je crée 2 fichiers dans le répertoire 3 :
cd /tmp/test
cd rep3
touch fic4 fic5

Les autres répertoires sont vides.

Je lance ma commande pour compter le nombre de fichiers contenus dans /tmp/test :
cd /tmp/test
ls -lR * | grep ^- | wc -l

Le résultat est 5.

Aide-mémoire Unix

Configurer ntpd sous linux fedora 15

 

Oups, ma date est incorrecte sous Linux Fedora 15, peut-être le passage à l’heure d’hiver qui s’est mal passé. Est-ce que j’ai installé ntp sur mon ordi ?

ps -aux | grep ntp

Non aucun résulat ! Il est grand temps de configurer ntp et de le synchroniser avec un serveur ntp.

Je vais rechercher le programme ntp, je vais voir s’il est déjà installé ou pas.

find . -name « ntp »

Résultat :
/var/lib/ntp
/etc/ntp

En effet, il est déjà installé. Peut-être que c’est juste le service qui n’est pas démarré dans ce cas. Je vais vérifier :

service ntpd status

Résultat : « inactive »

Je vais donc le démarrer :

service ntpd start

Puis je vais vérifier quels sont les serveurs ntp configurés dans le fichier de configuration /etc/ntp.conf. Voilà les lignes qui m’intéressent :

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.fedora.pool.ntp.org iburst
server 1.fedora.pool.ntp.org iburst
server 2.fedora.pool.ntp.org iburst
server 3.fedora.pool.ntp.org iburst

C’est parfait mon client ntp est bien configuré avec les serveurs ntp proposés par fedora.

Dernière chose à faire : configurer ntpd pour qu’il redémarre automatiquement au démarrage de Linux.

Le script de démarrage de ntpd existe déjà dans /etc/init.d/ntpd

Il ne me reste plus qu’à ajouter les liens qu’il faut dans /etc/rc*.d afin d’activer le redémarrage automatique.

ln -s /etc/init.d/ntpd /etc/rc3.d/S74ntpd
ln -s /etc/init.d/ntpd /etc/rc2.d/S74ntpd
ln -s /etc/init.d/ntpd /etc/rc4.d/S74ntpd
ln -s /etc/init.d/ntpd /etc/rc5.d/S74ntpd

Pour quelque chose de plus propre il faut faire de même en créant des liens pour l’arrêt de ntpd à l’arrêt de l’ordinateur. Chose qui est déjà configurée sur mon linux.

Cela donne :

[root@localhost ~]# ls -l /etc/rc*.d/*ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc0.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc1.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc2.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 16 12 nov.  00:17 /etc/rc2.d/S74ntpd -> /etc/init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc3.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 16 12 nov.  00:17 /etc/rc3.d/S74ntpd -> /etc/init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc4.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 16 12 nov.  00:17 /etc/rc4.d/S74ntpd -> /etc/init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc5.d/K74ntpd -> ../init.d/ntpd
lrwxrwxrwx. 1 root root 16 12 nov.  00:17 /etc/rc5.d/S74ntpd -> /etc/init.d/ntpd
lrwxrwxrwx. 1 root root 14 12 nov.  00:16 /etc/rc6.d/K74ntpd -> ../init.d/ntpd

Rien de mieux qu’un test grandeur nature. Allez je redémarre l’ordi :
init 6

Je vérifie que le service ntpd tourne :
service ntpd status

Résultat : « active »

Un coup d’oeil au fichier /var/log/messages pour être sûre. C’est bon, je lis bien les lignes mentionnant le démarrage de ntpd au reboot de l’ordinateur.

Cet article n’est pas exhaustif. Pour en savoir plus, visitez le site ntp.org.