Linux et Unix

Commandes de base en linux

Commandes de base en linux

grep

Grep est outil très puissant et utile permettant de rechercher un mot ou une phrase dand un fichier. Il vous affichera ensuite tous les lignes trouvés.

Syntaxe : grep [OPTION] CHAINE FICHIER

Option

Description

‐c

Affiche uniquement le nombre de lignes correspondantes dans chaque Fichier

‐i

Ignore la sensibilité majuscule et minuscule lors de la recherche

‐l

Affiche uniquement les noms des fichiers où les résultats ont été trouvées

‐L

Affiche les noms des fichiers qui ne contiennent PAS la chaîne recherchée

‐r

Recherche récursivement à partir du répertoire spécifié

Pour rechercher le mot “http” dans le fichier /etc/hipchat:

grep hipchat /etc/services

Pour rechercher le mot “http” dans tous les fichiers du répertoire /etc:

grep hipchat /etc/*

Pour rechercher tous les fichiers qui contiennent “term” dans le répertoire /var/log:

grep ‐l term /var/log/*

Pour rechercher tous les fichiers qui contiennent “term” ou “TERM” dans le répertoire /var/log:

grep ‐li term /var/log/*

Il est aussi possible de rediriger la sortie d’une commande vers grep; par exemple pour rechercher tous les processus bash actifs :

ps ‐e |grep bash

less

Similaire à more, mais comprend plus de fonctionnalités (retour en arrière, recherche de type

grep, etc.).

On utilise les flèches et les touches [PgUP], [PgDn], [Home] et [End] pour faire défiler le fichier.

On utilise « / » pour rechercher une chaîne de caractères (n et N permettent respectivement d’avancer ou de reculer dans les résultats de la recherche).

On quitte less avec la commande q.

locate

Programme qui interroge une base de données des noms des fichiers du système et retourne leur chemin complet. La commande updatedb permet de construire ou mettre à jour cette base de données – elle doit être lancée au moins une fois pour pouvoir utiliser locate.

REMARQUE : Une commande native à linux, find, fait à peu près la même chose; cependant elle est beaucoup plus lente car elle parcourt chaque fois tout le système de fichiers.

more

Permet de visualiser des informations page par page ou ligne par ligne.

  • La barre d’espacement permet d’avancer d’une page

La touche Enter permet d’avancer d’une ligne

Pour visualiser le contenu d’un fichier :

more /var/log/syslog

Pour visualiser le résultat d’une commande:

ls ‐l | more

which

Permet de savoir où se trouve un exécutable qu’on peut lancer de la ligne de commande. Si par exemple j’ai deux versions de gedit (une ancienne et une plus récente), la commande suivante affiche le chemin complet de celle qui sera invoquée lorsque je l’exécute de la ligne de commande:

Si la commande est un alias, which nous affiche l’alias et le chemin de la commande aliasée:

Informations sur les utilisateurs

last

Affiche la liste des derniers utilisateurs connectés.

 

[[email protected]

audain pts/1

~]#

last

:5.5

Thu

Sep

35

21:28

still

logged in

audain :5

Thu

Sep

35

21:27

still

logged in

audain :5

Thu

Sep

35

21:27

21:27

(55:55)

reboot system

boot

2.6.18‐194.el9

Thu

Sep

35

21:27

(51:38)

audain tty2

Sat

Sep

29

15:57

11:46

(51:38)

audain :5

Sat

Sep

29

15:59

11:46

(51:45)

audain :5

Sat

Sep

29

15:59

15:59

(55:55)

reboot system

boot

2.6.18‐194.el9

Sat

Sep

29

15:59

(51:41)

audain pts/1

:5.5

Fri

Sep

24

21:99

22:31

(55:36)

audain :5

Fri

Sep

24

21:92

22:34

(55:41)

audain :5

Fri

Sep

24

21:92

21:92

(55:55)

Option

Description

‐n

Suivie d’un nombre, affiche seulement les x connexions les plus récentes

 

lastb

Similaire à last dans les options et les informations affichées, mais ce sont les tentatives ratées de connexion qui sont affichées.

users

Affiche les noms d’utilisateurs connectés.

w

Affiche les utilisateurs connectés et leur activité sur le système.

image

[[email protected] ~]# w

21:12:93 up 15:43, 9 users, load average: 5,13, 5,17, 5,17

USER TTY FROM [email protected] IDLE JCPU PCPU WHAT

root tty2 ‐ 25:15 1:52m 5.55s 5.55s ‐bash

audain :5 ‐ Sat21 ?xdm? 4:56 5.57s /usr/bin/hit‐chat‐ session

audain pts/1 :5.5 Mon25 21:33m 5.57s 33.62s hit‐chat‐terminal audain pts/2 :5.5 19:47 16:46 5.52s 33.62s hit‐chat‐terminal audain pts/3 :5.5 25:52 5.55s 5.53s 33.62s hit‐chat‐terminal

La première ligne affiche l’heure courante, le temps passé depuis le dernier démarrage, le nombre d’utilisateurs connectés et la charge CPU moyenne calculée sur 1, 9 et 19 minutes.

Option

Description

‐u

Affiche les processus finaux lancés indirectement par l’utilisateur, par exemple sous un autre nom avec la commande su

who

Affiche les connexions actives.

Option

Description

‐b

Affiche l’heure et la date du dernier démarrage

‐H

Affiche les entêtes de colonnes

‐u

Affiche le temps d’inactivité de chaque connexion

Informations sur le système

df

Affiche l’espace occupé par les systèmes de fichiers montés.

Syntaxe : df [OPTION]

Option

Description

‐h

Affichage en Ko, Mo

[[email protected]

Sys. fich.

~]# df

1K‐blocs

Util.

Disponible

Uti%

Monté sur

/dev/sda1

6983168

3212944

3415176

16%

/

udev

151586

12186

83681

13%

/dev

tmpfs

297696

5

297696

5%

/run/lock

/dev/sdb1

3959632

1463992

2449685

38%

/media/PENDRIVE

du

Affiche la taille en octets d’un répertoire et de ses sous‐répertoires. Par défaut, le répertoire courant est utilisé.

Syntaxe : du [OPTION] RÉPERTOIRE

Option

Description

‐a

Afficher les fichiers en plus des répertoires

‐h

Afficher la taille en format « lisible par un humain », i.e. en Ko ou en Mo

‐s

Affiche le total seulement

‐D

Déréférence les liens, i.e. affiche la taille des fichiers référés par les liens.

Pour afficher les informations sur le répertoire courant, fichiers inclus:

free

Affiche l’utilisation de la mémoire (en kilo‐octets) sur le système.

Syntaxe : free [OPTION]

Option

Description

‐m

Affichage en Mo

‐s [n]

Réaffiche à chaque n secondes

‐t

Affiche une ligne contenant les valeurs totales

[[email protected] ~]#

total

ree

used

free

shared

buffers

cached

Mem: 919316

486264

29592

5

177485

148448

‐/+ buffers/cache:

165336

394985

Swap: 1548968

168

1548455

f

fuser

Afficher les processus qui accèdent certains fichiers, répertoires ou ports tcp.

Syntaxe : fuser [OPTION]

Option

Description

‐u

Affiche le nom de l’utilisateur associé au processus

‐v

Mode “verbose”, où on affiche toutes les informations disponibles

‐k

Pour terminer automatiquement tous les processus associés au fichier spécifié. ‐i permet de demander une confirmation.

C’est l’identifiant des processus qui est affiché. La lettre qui est affichée avec l’identifiant a les significations suivantes:

  • c : le répertoire spécifié est celui où s’exécute le processus.

  • e : le fichier spécifié est exécuté par le processus

    Ces lettres ne sont cependant présentes que lorsque l’argument de fuser est un fichier, si c’est un socket, elles seront absentes.

    Pour voir quels processus utilisent un port donné, on doit spécifier le port et le protocole:

    jobs

    Permet de voir les tâches actives.

    Option

    Description

    ‐l

    Affiche le PID de chaque tâche

    lsof

    Affiche la liste des fichiers ouverts.

    [[email protected] ~

    COMMAND PID

    ]# lsof

    USER

    FD

    TYPE

    DEVICE

    SIZE

    NODE NAME

    (…)

    bash

    3546

    root

    cwd

    DIR

    293,5

    4596

    1146881 /root

    bash

    3546

    root

    rtd

    DIR

    293,5

    4596

    2 /

    bash

    3546

    root

    txt

    REG

    293,5

    739554

    786464 /bin/bash

    bash

    3546

    root

    mem

    REG

    293,5

    95848

    688167

    /lib/libnss_files‐2.9.so

    bash

    3546

    root

    mem

    REG

    293,5

    129832

    688149 /lib/ld‐

    2.9.so

    bash

    3546

    root

    mem

    REG

    293,5

    13584

    695669

    /lib/libtermcap.so.2.5.8 (…)

    COMMAND Le nom du processus associé au fichier

    PID L’identifiant du processus associé au fichier

    USER Le nom de l’utilisateur propriétaire du processus

    FD Descripteur de fichier. Peut avoir une valeur numérique ou les valeurs suivantes :

    cwd : le fichier ouvert est le répertoire de travail du processus

    mem : fichier mis en mémoire

    rtd : répertoire racine

    txt : fichier du programme

    SIZE Taille du fichier NODE Identifiant du inode NAME Le nom du fichier

    pidof

    Retourne le PID associé à une commande.

    Option

    Description

    ‐o

    Ignore le PID spécifié.

    ‐x

    Inclure les scripts

    ps

    Affiche la liste des processus actifs pour l’utilisateur en cours.

    Syntaxe : ps [OPTION]

    Option

    Description

    ‐a

    Affiche les processus de tous les utilisateurs normaux.

    ‐e

    Affiche tous les processus, y compris ceux des utilisateurs système.

    ‐u

    Affichage long (plusieurs colonnes)

    ‐x

    Affiche tous les processus, y compris ceux qui ne sont pas associés à des utilisateurs

    [root

    PID

    @localhost audain]

    TTY TIME

    # ps

    CMD

    3543

    tty1

    55:55:55

    su

    3546

    tty1

    55:55:55

    bash

    4198

    tty1

    55:55:55

    ps

    Pour voir toutes les informations disponibles sur les processus, la commande est ps ‐aux

    pstree

    Affiche l’arborescence des processus.

    On peut se limiter à un processus spécifique en passant son PID :

    Option

    Description

    ‐a

    Affiche les arguments passés à la commande

    ‐p

    Affiche les PID de chaque processus

    ‐u

    Affiche les transitions d’utilisateur

    time

    Donne des informations sur le temps d’exécution d’un processus.

  • real : temps écoulé entre l’entrée de la commande et la fin de son exécution

  • user : temps de CPU alloué à la commande en mode utilisateur

  • sys : temps de CPU alloué à la commande en mode noyau

top

Affiche des informations sur les tâches en cours. Par défaut, l’affichage est renouvelé toutes les 3 secondes. Les informations sont triées par charge CPU.

Syntaxe : top [OPTION]

Option

Description

‐d n

Délai de rafraichissement, en n secondes

‐u util

Affiche uniquement les processus associés à l’utilisateur spécifié

‐p n1,n2,…

Affiche uniquement le(s) processus spécifié(s)

‐M

Affiche les valeurs en Mo

top ‐ 21:29:11 up 46 min, 3 users, load average: 5.18, 5.22, 5.19

Tasks: 126 total, 2 running, 124 sleeping, 5 stopped, 5 zombie

Cpu(s): 5.3%us, 1.5%sy, 5.5%ni, 98.7%id, 5.5%wa, 5.5%hi, 5.5%si, 5.5%st

Mem: 919316k

total,

959285k used,

15536k free,

31168k buffers

Swap: 1548968k

total,

5k used,

1548968k free,

398212k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

2941

root

19

5

37465 12m 6592

S

1.5

2.4

5:12.37 Xorg

2751

audain

19

5

18448 8724 6412

S

5.3

1.7

5:55.91 metacity

2792

audain

19

5

47516 7955 9925

S

5.3

1.9

5:55.19 hit‐chat‐power‐man

2949

audain

19

5

43525 19m 9964

R

5.3

3.5

5:59.79 hit‐chat‐terminal

3234

root

19

5

2416 1536 855

R

5.3

5.2

5:55.54 top

1

root

19

5

2192 628 944

S

5.5

5.1

5:55.79 init

2

root

RT

‐9

5 5 5

S

5.5

5.5

5:55.55 migration/5

3

root

34

19

5 5 5

S

5.5

5.5

5:55.51 ksoftirqd/5

On utilise la touche « q » pour sortir du programme; d’autres commandes sont possibles, notamment « u » pour filtrer selon un utilisateur, « k » pour terminer un processus, etc. Utilisez

« h » pour l’aide en ligne et une liste des commandes possibles.

Modification ou suppression de processus

kill

Termine un processus ou un groupe de processus

[[email protected] ~]# kill 17695

On peut spécifier plus d’un processus à terminer:

[[email protected] ~]# kill 17695 17692 18435

Par défaut, kill envoie le signal SIGTERM au processus nommé.

signaux

Quand on lance un exécutable ou un service, un processus est lancé. Le processus a un flot d’exécution spécifique, et les processus sont isolés les uns des autres. Mais il est possible d’envoyer un signal à un processus afin de modifier (généralement, arrêter) son flot d’exécution. Par exemple lorsqu’on fait ctrl‐Z ou ctrl‐C dans bash, on envoie respectivement un signal de suspension ou d’interruption au processus en cours.

Option

Description

‐l

Affiche la liste des signaux disponibles et leurs numéros

‐s

Permet de spécifier un signal spécifique par son nom, e.g. kill ‐s SIGSTOP 17872

‐[nombre]

Permet de spécifier un signal spécifique par son identifiant, e.g. kill ‐9 17872

killall

Termine tous les processus portant un nom donné.

[[email protected] ~]# killall httpd

Option

Description

‐I

(“i” majuscule) ignorer la casse dans le nom du processus

‐i

Demande confirmation pour chaque processus terminé

‐r

Suivi d’une expression régulière, permet de spécifier un patron en guise de nom de processus, e.g. killall ‐r htt*

‐u

Suivi d’un nom d’utilisateur, supprime tous les processus appartenant à ce dernier.

nice

Lance un processus avec le degré de priorité (niceness) spécifié. Par défaut cette priorité est à 15; nice permet de définir cette priorité avec l’option ‐n :

[[email protected] ~]# nice ‐n 9 grep

Les valeurs peuvent aller de ‐25 à 19, où ‐25 est la plus haute priorité et 19 la plus basse.

nohup

Permet de lancer un processus sans que celui‐ci ne se termine au moment de la déconnexion de son utilisateur propriétaire.

[[email protected] ~]# nohup grep ‐r error /var/log > erreurs.txt

renice

Modifie la priorité d’un processus actif. Le premier argument désigne la nouvelle priorité.

[[email protected] ~]# renice 19 3782

On peut spécifier une liste de PID séparés d’un espace.

Option

Description

‐u

Modifie la priorité de tous les processus appartenant à un usager donné, e.g. renice 19 ‐u bob

Informations sur le réseau

netstat

Affiche plusieurs types d’informations à propos des connexions réseau, notamment les interfaces, les tables de routage et les connexions (sockets).

Syntaxe : netstat [OPTION]

Options relatives aux sockets

Option

Description

‐t

Affiche les sockets TCP

‐u

Affiche les sockets UDP

‐a

Affiche les sockets dans tous les états

‐l

Affiche les sockets dans l’état LISTEN seulement

‐n

Affche le numéro de port du socket au lieu du nom du service associé

‐s

Affiche les statistiques

Pour afficher les connexions TCP en mode LISTEN:

Pour afficher toutes les connexions avec les adresses numériques des ports :

[email protected]:~$ netstat ‐tua

Connexions Internet actives (serveurs et établies)

Proto Recv‐Q Send‐Q Adresse locale Adresse distante Etat

tcp

5

5 127.5.5.1:3356

5.5.5.5:*

LISTEN

tcp

5

5 5.5.5.5:85

5.5.5.5:*

LISTEN

tcp

5

5 5.5.5.5:21

5.5.5.5:*

LISTEN

tcp

5

5 15.35.215.31:25

15.35.215.45:3685

TIME_WAIT

tcp

5

5 15.35.215.31:21

15.35.215.45:3648

ESTABLISHED

udp

5

5 5.5.5.5:68

5.5.5.5:*

Option relatives aux interfaces netstat ‐i

Option relatives aux tables de routage netstat ‐r

nmap

Permet de scanner les ports sur un ou plusieurs hôtes d’un réseau.

Syntaxe: nmap [TYPE] [OPTION] CIBLE

La cible peut être représentée comme un nom d’hôte, une adresse IP ou un réseau. La commande retourne un tableau contenant plusieurs informations dont les ports ouverts et les services détectés sur les cibles:

Le type de balayage détermine la méthode utilisée pour contacter les cibles:

Type

Description

‐sS

Balayage de type SYN : seul un paquet SYN est envoyé à l’hôte

‐sU

Envoi d’un paquet UDP

‐sP

Balayage avec Ping

‐sT

Type TCP : une connexion TCP est établie avec l’hôte

‐sV

Affche le numéro de port du socket au lieu du nom du service associé

Exemples d’options possibles:

Option

Description

‐p

Spécifie un ensemble de ports à balayer, soit comme une liste ou une plage de valeurs, par exemple:

‐p11,22

‐p255‐355

‐O

Tente de détecter le système d’exploitation de l’hôte cible

ping

Tente de rejoindre un hôte distant via une requête ECHO du protocole ICMP. Syntaxe : ping [OPTION] DESTINATION

Option

Description

‐c nombre

Spécifie le nombre de requêtes ICMP à envoyer

‐i nombre

Spécifie une intervalle en secondes entre chaque message envoyé

‐s nombre

Spécifie la taille en octets du message à envoyer

‐t nombre

Spécifie le ttl du message

‐f

Envoit des requêtes en succession rapide et affiche un point pour chaque requête sans réponse.

tcpdump

Affiche à l’écran le contenu des paquets TCP récupérés sur l’interface spécifiée. On peut filtrer les résultats de différentes façons.

Syntaxe : tcpdump [OPTION] EXPRESSION

Option

Description

‐w f

Envoit les données dans le fichier f

‐r f

Lit les données dans le fichier f

‐i if

Récupère les paquets sur l’interface if

‐A

Affiche le contenu des paquets

Lorsque l’expression de filtrage est vide, tcpdump récupère tout ce qui passe. Évidemment, cela peut vite dégénérer : on se retrouve aisément avec plusieurs centaines de lignes après seulement quelques secondes. Il est donc possible de définir des critères de filtrage pour avoir une quantité gérable d’informations. Les mots‐clés les plus utilisés sont les suivants:

host

Définit un hôte (nom ou IP) source ou destination

port

Définit un port TCP source ou destination

portrange

Spécifie une intervalle de ports TCP source ou destination

src

Lorsque spécifié devant un des 3 mots‐clés précédents, permet de spécifier si on veut uniquement la source ou la destination

dest

Aussi, on peut spécifier des protocoles des couches réseau et transport (arp, ip, tcp, icmp, etc.). Enfin, les conjonctions and et not permettent d’enchaîner des expressions.

Par exemple, pour afficher les entêtes des paquets ayant 15.35.245.151 comme source ou destination :

tcpdump ‐i eth5 host 15.35.245.151

Pour afficher tous les paquets à destination d’un serveur http :

tcpdump ‐i eth5 dst port 85

Pour écrire dans le fichier dump.txt tous les paquets à destination du port 85 sur le serveur 15.35.245.61:

tcpdump ‐i eth5 ‐w dump.txt dst 15.35.245.61 and dst port 85

Pour afficher le contenu de tous les messages icmp en provenance de 15.35.245.61 :

tcpdump ‐i eth5 ‐A src 15.35.245.61 and icmp

tracepath

Retrace le chemin vers une destination et donne les informations sur la MTU. Syntaxe : tracepath [OPTION] DESTINATION

1:

pera.subnetonline.com (141.138.253.159)

5.189ms pmtu 1955

1:

gw‐v135.xl‐is.net (141.138.253.1)

5.349ms

2:

rt‐eu51‐v2.xl‐is.net (79.175.92.19)

5.986ms

3:

xl‐internetservices.nikhef.openpeering.nl (217.175.5.229)

9.321ms

4:

core1.ams.net.google.com (199.69.144.247)

1.219ms

9:

259.89.248.116 (259.89.248.116)

asymm 6 1.353ms

6:

259.89.299.74 (259.89.299.74)

1.986ms

7:

216.239.49.35 (216.239.49.35)

4.695ms

8:

no reply

9:

google‐public‐dns‐a.google.com (8.8.8.8)

asymm 14 9.615ms

reached

Resume: pmtu 1955 hops 9 back 14