Accueil

 

Boot initialazation and runlevels

Gnu et Unix commands

Linux file system and FHS

Autres commandes

X

à classer

Boot2

Niveaux d'exécution3

Le shell interactif5

Gestion des fichiers7

Standard I/O and descripteurs10

Utilisation des tubes redirections et unix stream10

Gérer les processus11

Utilisation des expressions régulières regex15

Système de fichiers & partitions18

Maintenir l'intégrité du système de fichier19

Permissions et droits d'accès21

Liens softs / hards24

Filesystem Hierachy Standard - FHS25

Localiser les fichiers28

standalone29

tcpwrapper29

Autres commandes

X

à classer

 

 

 

 

 

1.      Boot initialazation and runlevels. 2

1.1.    Boot 2

1.2.    Niveaux d'exécution. 3

2.      Gnu et Unix commands. 5

2.1.    Le shell interactif 5

2.2.    Gestion des fichiers. 7

2.3.    Standard I/O and descripteurs. 10

2.4.    Utilisation des tubes redirections et unix streams. 10

2.5.    Gérer les processus. 11

2.6.    Utilisation des expressions régulières regex. 15

3.      Linux file system and FHS. 18

3.1.    Système de fichiers & partitions. 18

3.2.    Maintenir l'intégrité du système de fichier 19

3.3.    Permissions et droits d'accès. 21

3.4.    Liens softs / hards. 24

3.5.    Filesystem Hierachy Standard - FHS. 25

3.6.    Localiser les fichiers. 28

3.7.    standalone. 29

3.8.    tcpwrapper 29

4.      Autres commandes. 29

5.      X. 30

6.      à classer 30

 

 

 

1.      Boot initialazation and runlevels. 2

1.1. Boot 2

1.2. Niveaux d'exécution. 2

1.2.1.      Runlevel 1. 3

2.      Gnu et Unix commands. 4

2.1. Le shell interactif 4

2.1.1.      Les chemins absolus et relatifs. 4

2.1.2.      Les variables. 4

2.1.3.      Entrée des commandes. 5

2.1.4.      Historique des commandes. 5

2.1.5.      Récursivité. 6

2.2. Gestion des fichiers. 6

2.2.1.      Les commandes de base. 6

2.2.2.      wildcards globs globbing. 9

2.3. Standard I/O and descripteurs. 9

2.3.1.      Entrée standard (stdin) 9

2.3.2.      Sortie standard (stdout) 9

2.3.3.      Erreur standard (stderr) 9

2.4. Utilisation des tubes redirections et unix streams. 9

2.4.1.      Pipes. 9

2.4.2.      Redirection. 9

2.4.3.      tee. 10

2.5. Gérer les processus. 10

2.5.2.      La surveillance des processus. 11

2.5.3.      Les signaux. 13

2.5.4.      Modifier la priorité d'exécution des processus. 13

2.6. Utilisation des expressions régulières regex. 14

2.6.1.      grep. 14

2.6.2.      sed. 15

2.6.3.      ou [] ex grep dev[.]hda /etc/fstab ou grep dev\.hda Expressions régulières regex. 15

2.6.4.      Expressions régulières basiques. 17

3.      Linux file system and FHS. 17

3.1. Système de fichiers & partitions. 17

3.1.1.      Interface IDE. 17

3.1.2.      Partitionnement du disque. 17

3.2. Maintenir l'intégrité du système de fichier 18

3.2.1.      Surveillance de l'espace libre et des inodes. 18

3.2.2.      Vérifier l'intégrité du système de fichier 19

3.3. Permissions et droits d'accès. 20

3.3.1.      Plusieurs systèmes de notation. 20

3.3.2.      Droits spéciaux. 20

3.3.3.      Umask. 21

3.3.4.      chmod. 22

3.3.5.      chown. 22

3.3.6.      chgrp. 23

3.3.7.      usermod. 23

3.4. Liens softs / hards. 23

3.4.1.      Liens hards. 23

3.4.2.      Liens softs. 23

3.4.3.      Actions sur les liens. 24

3.5. Filesystem Hierachy Standard - FHS. 24

3.5.1.      /root filesystem.. 25

3.5.2.      /usr filesystem.. 25

3.5.3.      /var filesystem.. 26

3.5.4.      Résumé de l'emplacement des binaires. 26

3.6. Localiser les fichiers. 27

3.6.1.      which. 27

3.6.2.      find. 27

3.6.3.      Locate. 27

3.6.4.      whatis. 28

3.6.5.      apropos. 28

3.7. standalone. 28

3.8. tcpwrapper 28

4.      Autres commandes. 28

4.1.1.      commande cut 28

4.1.2.      commande tr 28

5.      X. 29

6.      à classer 29

 

 

1.   Boot initialazation and runlevels

 

1.1.  Boot

 

Pour le pc la rom correspond au bios. ==> bios ==> lilo ==> lance le kernel linux (ou un autre os) Il est parfois nécessaire de fournir des paramètres au kernel par les commandes dans le prompt lilo. Ces valeurs permettent de renseigner le kernel sur des informations qu'il n'aurait pas pu obtenir seul, ou pour écraser les valeurs connues. Ces paramètres sont passés dans le fichier de configuration de lilo ou au prompt lilo.

Par exemple pour booter sur un autre partition root, que celle spécifiée : LILO : linux root=/dev/hda9 linux = nom de l'image du kernel ==> lance le kernel nommé linux avec comme partition root /dev/hda9 au lieu de /dev/hda1.

 

Les kernels linux modernes sont modulables

=> Certains modules traditionnellement compilés dans le kernel, peuvent être chargés quand requis. Ces modules sont séparés du noyau et peuvent être insérés ou retirés si nécessaires.


Les commande Lilo affectent le kernel mais pas le contrôle des modules. Les options des modules kernel peuvent être passées dans le fichier /etc/modules.conf ou conf.modules sur certaines distributions. (IO adresses, IRQ, canal DMA, paramètres carte son ...) ex alias sound op13saz options op13saz nss_io=0x530 irq=5 dma=0 dm2=1 mpu_io=0x388

 

Les messages de boot (kernel messages) sont visibles avec la commande dmesg dmesg | less ou dmesg > bootmsg.txt

Pour examiner et debugger le boot, l'usage seul de dmesg n'est parfois pas suffisant. Certains messages sont logés par syslog dans /var/log/messages ex infos NIC : dmesg indique l'initialisation de la carte mais les infos sur le statut et la configuration sont dans /var/log/messages.

1.2.  Niveaux d'exécution

Le processus init est le premier processus lancé. C'est lui qui se charge de lancer tous les autres par la suite. Il démarre le runlevel par défaut du système. 3

 

0

arrêt

1

single user (maintenance) également s ou S

2

multiusers sans partage nfs

3

multiusers complet (souvent par défaut)

4

inutilisé

5

multiusers avec gui

6

reboot

 

1.2.1.                     Runlevel 1

 

Réparation d'un système de fichier corrompu ou installation / configuration d'un soft devant être effectuée sans utilisateur. à partir du prompt lilo syntaxe nom_image_kernel single (ou 1)

 

ex linux single

 

Pour changer de runlevel init 5 par ex pour passer en mode gui (rem s'assurer que X est bien configuré auparavant sinon blocage car le système essaye de lancer x en boucles)

 

rc.sysinit => script lancé par le processus init (se charge de monter les systèmes de fichiers)

 

rc.local => appelé par rc.sysinit ( modifications du démarrage du système souvent apportées dans ce fichier car son contenu n'est pas modifié en cas d'upgrade # rc.sysinit)

 

init.d => répertoire contenant des scripts permettant de lancer / stopper tous les services du système. arguments : start / stop / restart / status / reload (relecture du fichier de config sans interruption).

 

à l'installation d'un service un script d'initialisation doit être placé dans init.d (automatiquement) sinon le créer ou entrer des commandes de démarrage dans rc.local.

 

Répertoires rc0.d - rc6.d => contiennent des liens pointant sur les scripts à exécuter correspondant au niveau de démarrage choisit.

 

Caractéristiques des liens

 

 

K ou S en début de nom pour kill ou start

 

N° de priorité de lancement (petits => priorité importante)

 

nom du script lancé (par convention)

 

 

Changement du runlevel par défaut dans /etc/inittab id : n : initdefault :

 

runlevel :

Cette commande permet de connaître le niveau actuel ainsi qu'un historique depuis le boot. ex 3 5 => le système a été lancé en niveau 3 puis est actuellement en 5 ou N5 => le niveau actuel est 5 (N pas de précédent).

 

Init grand père de tous les processus peut être utilisé par root pour changer le runlevel

init 0 => arrêt

init 6 => reboot

init 1 ou s => maintenance

init -q => relecture du fichier /etc/inittab.

On peut également utiliser telinit qui est un lien hard sur init. Cette manière d'arrêter le système est brutale (pas de message d'avertissement # shutdown ) ne convient pas aux serveurs en réseau.

 

Shutdown

Envoi un message d'avertissement aux utilisateurs connectés => nouveaux logins impossibles syntaxe shutdown (option) time [warning message] par défaut retour en single.

Utilise aussi la commande init. options -h =>

halt -r => reboot -f => fast (pas de fsck au boot) -F => (force fsck au next boot). Time +5 (5 minutes) ou 23:59 ou encore now

ex shutdown -r +5 maintenance système


2.   Gnu et Unix commands

2.1.  Le shell interactif

 

Il s'agit d'un interpréteur de commandes qui procure le prompt.

Peut fonctionner en standalone ==> simple terminal ou à l'intérieur d'une fenêtre dans un GUI.

 

La commande cd est intégrée au shell bash

 

2.1.1.                     Les chemins absolus et relatifs

 

.          => le répertoire actuel

~       => correspond au path de home cad /root pour root et /home/user pour les autres
            ./myprog    ~/myfile.txt  on passe le fichier qui se trouve chez moi en paramètre
ou encore
./myprog    ~fred/myfile.txt  dans le répertoire de fred

 

2.1.1.1.Les chemins absolus

 

Commencent toujours par /

Sont toujours interprétés relativement à la racine du système

(et oui même les chemins absolus sont relatifs !)

 

2.1.1.2.Les chemins relatifs

 

Sont toujours interprétés relativement au répertoire actuel.

 

Ex  cd local/bin ou cd ..

 

2.1.2.                     Les variables

Deux types de variables :

 

Les variables shell pour un seul shell (deviennent des variables d'environnement quand elles sont exportées), et les variables d'environnement (pour tous les shells et programmes)

 

Durant son exécution bash maintient un set de variables shell qui déterminent son fonctionnement. La plupart sont initialisées au démarrage du shell mais elles peuvent l'être manuellement à n'importe quel moment.

 

PS1 => Indique les paramètres du prompt (il existe un PS2 lorsque bash à besoin de lignes multiples ?)

echo $PS1 pour l'afficher => ex [ \u@ \h \ W] \$

\ pour échapper caractère ayant une signification particulière pour bash - les autres sont interprétés littéralement []

u => nom d'utilisateur

h => nom d'hôte système

W=> fin du répertoire courant et

$ => pour afficher le caractère $

question pourquoi le $ est il échappé alors qu'il est interprété littéralement ??  réponse parce qu'il ne se trouve pas entre les parenthèses

 

HISTSIZE => historique des commandes lien sur en dessous

 

PATH => autre variable très importante ajouter rubrique pour modifier le path ex ajouté un répertoire => pas explicitement demandé pour 101 ?

 

Les commandes exécutées par le shell sont des commandes internes ex cd, pwd non forkées.
Des commandes dont le répertoire de localisation est intégré au path. Des commandes pleinement définies

 

Le shell utilise les variables pour son propre fonctionnement, cependant des variables sont aussi nécessaires à des programmes lancés depuis le shell (ou le lancement d'autre shells). Pour que ces variables puissent être utilisées il faut les exporter. Elles deviennent alors des variables d'environnement.

 

2.1.2.1.Exporter une variable

 

Les variables d'environnement sont passées aux programmes et autres shells => l'ensemble forme l'environnement dans lequel s'exécute le programme.

$ export MYVAR => exporte la variable MYVAR ; elle pourra être réutilisée même si le shell est fermé.

 

Restent initialisées même dans un nouveau shell.

exemple

FOO=foo   #initialisation des variables

BAR=bar

export BAR #exportation de la variable

echo $FOO  $BAR #les 2 apparaissent  => foo bar

 

mais dans un nouveau shell

echo $FOO $BAR  => bar    #seule la variable exportée est initialisée.

2.1.3.                     Entrée des commandes

 

Il y a trois différentes sources d'options :

1.      unix98 avec tiret

2.      BSD sans tiret

3.      GNU avec deux tirets. le standard GNU --all = -a

 

Syntaxe commande / option / argument /

 

En général les options précédées d'un tiret peuvent être combinées ex ls -a -l = ls -al

 

Certaines commandes telles tar ou (ps pas vraiment) n'exige pas de tiret devant l'options car au moins une option est indispensable.

 

Exécution de plusieurs commandes successivement avec le point virgule

ð       ls ; ps = execute ls puis ps

 

revoir paragraphe sur commandes multiples avec for var in arg1 arg2 p 15 et page 18 substitution

2.1.4.                     Historique des commandes

 

L'historique des commandes est contrôlé par la variable HISTSIZE (par défaut 500 lignes) Par défaut stocké dans le ~/.bash_history Commandes interne history => affiche l'historique des commandes (lignes numérotées)

!! bang bang    réexécute la dernière commande

! n        réexecute la commande n (n étant le numéro de cde dans .bash_history)

! string            réexecute la dernière commande commençant par la chaine "string"

!? string          réexecute la dernière commande contenant la chaine "string" Editer l'historique

 

Déplacement dans l'historique des commandes (identiques à emacs)

C pour ctrl / M pour meta => souvent alt

C-p

Previous Ligne précédente (fléche en haut équivalente)

 

7

C-n

Next ligne suivant ou fleche en bas

C-b

Back retour d'un caractère flèche à gauche

C-f

forward avance d'un caractère flèche droite

C-a

debut de ligne

C-e

end of line

C-l

clear

C-d

delete caractère de droite

C- k

kill efface du curseur à la fin de la ligne

C-y

colle le texte effacé précédemment

 

2.1.5.                     Récursivité

Certaines commandes prennent une option pour agir de manière récursive

ex chmod -R d'autres comme find sont récursives par défaut find option -exec pour exécuter une commande sur le résultat de la recherche (durant l'exécution la variable {} est remplacée par le résultat)

 

exemple find src -name "*.c" -exec chmod g+w {} \ ; point virgule à la fin de la commande tous les metacaractères doivent être échappés y compris le ;

 

2.2.  Gestion des fichiers

 

Une hiérarchie d'objets est créée sur chaque système, comprends principalement deux types d'objets les fichiers et les répertoires. Au sein de cette hiérarchie, les objets doivent ensuite être modifiés, lus, crées, copiés, déplacés, détruits, c'est une des tâches les plus importantes de l'administrateur.

 

inodes

Chaque objet est identifié par un inode qui fournit des informations (situation sur le disque, date de modification, paramètres de sécurité)

 

2.2.1.                     Les commandes de base

 

2.2.1.1.ls

 

- a

All Affiche tous les fichiers y compris les fichiers cachés (commencent par un point)

-l

Listing complet (long)

-d

Pour lister un répertoire

-i

Affiche le n° d'inode

-R

Listing récursif

 

 

 

Exemples

ü        Connaître le n° d'inode d'un répertoire  =>  ls  –id /usr/local

ü        Lister un répertoire => ls –dl  /usr/local    (la deuxième colonne du résultat indique le nombre de liens qui pointent vers cet inode)

2.2.1.2.cp

 

cp [option] file1 file2     ou  cp [option] files directory => si uniquement un fichier à copier et rep inexistant => il y a copie du fichier en local (avec le nom du répertoire) c'est la forme file1 file2.


Les fichiers copiés comportent un inode différent.

 

-f

force l'écrasement d'un fichier destination existant

-i

interactif prompt pour demander autorisation d'écrasement du fichier destination (un alias cp -i est souvent crée pour cp pour root)

-p

Préserve toutes les infos cad propriétaire, groupe, permissions et timestamp, sans cette option => permissions, groupe et proprio par défaut + timestamp de l'heure de création.

-r -R

récursif avec cette option un répertoire sera copié intégralement y compris sous répertoires.

 

-v

verbeux affiche le nom de chaque fichier avant copie

 

 

 

 
Exemples

 

cp /var/log/messages  => copie du fichier messages dans le répertoire courant

cp -Rp src src2 => copie identique du répertoire src avec conservation des attributs.

cp file[1234] ~ => copie des fichiers file1 file2 etc dans mon répertoire home.

2.2.1.3.mkdir

Création d'un ou plusieurs répertoires / droit d'écriture dans le répertoire indispensable

mkdir [option] répertoire

 

-m

mode configure les permissions d'accès pour le répertoire

-p

parent pour créer une arborescence de répertoire en une seule fois

 

 

Exemples

 

mkdir   tic tac toe   => création de trois répertoires

mkdir -m 444 test => création d'un répertoire test avec les droits 444


mkdir -p ~/dir1/dir2/dir3
=> arborescence créée en une seule fois très utile rapide

 

2.2.1.4.mv

 

mv [option] source  target

 

Permet de déplacer et renommer des fichiers (même opération du point de vue du système)

 

Lors d'un déplacement sur une même partition (système de fichier identique) le fichier n'est pas vraiment déplacé mais c'est l'entrée qui est modifiée avec la nouvelle position (inode identique)

 

Par contre lors d'un déplacement sur un autre système , le fichier orignal est copié sur la destination et l'original détruit (nouvel inode)

 

-f

force déplacement même si cible déjà existante

-i

interactif prompt de confirmation

 

2.2.1.5.rm

rm [option] file

Permet de détruire un ou plusieurs fichiers. Pour détruire un fichier il faut la permission d'écriture sur le répertoire contenant ce fichier mais le droit d'écriture sur le fichier lui même n'est pas nécessaire.

 

fuo

-d

suppression de répertoire même s'ils ne sont pas vides# rmdir (droit w sur répertoire contenant nécessaire)

-r -R

suppression récursive (sous répertoire + contenu) dangereux

-i

interactif prompt confirmation avant suppression par défaut quand les fichiers ne sont pas protégé jamais de prompt

-f

force - supprime un fichier protégé en écriture sans confirmation (cad si l'utilisateur n'a pas le droit w sur le fichier mais

 

2.2.1.6.rmdir

rmdir [option] directories

 

Les répertoires doivent être vides

 

fuo

 

-p => supprime les répertoires parents qui deviennent vides par conséquent. par exemple un répertoire dir1 contenant dir 2 qui contient dir 3 etc => la suppression du répertoire 4 avec rmdir -p dir1/dir2/dir3/dir4 entraînera la suppression de dir1,2,3 qui sont devenus vides.

2.2.1.7.touch

 

Création d'un fichier.

 

Si le fichier existe déjà, modifie l'heure d'accès ou de modification du fichier

 

-a

accès - change uniquement l'heure d'accès

-m

modification - uniquement l'heure de modification

-t

utilisation d'un timestamp

 

2.2.1.8.Echo

 

echo "firstline" > mon_fichier

2.2.2.                     wildcards globs globbing

Permet de spécifier plusieurs fichiers en même temps.

Les globings sont limités aux commandes # des expressions régulières

Comprend n'importe quel caractère y compris zéro => x* => x, xy, xyz etc ?

·         match exactement un caractère => x?? => xyy xyz oui mais x ou xy non [yz]

·         match un caractère => x[yz] => xy ou xz oui [!yz]

·         match tout caractère unique différent de ceux listés dans les parenthèses [a-z]

·         match un seul caractère appartenant au range [!a-z]

·         match un seul caractère n' appartenant au range


ls con*/*/inv*.txt     Liste toutes les factures de tous les mois de tous les dossiers contracting (un par mois)

 

2.3.  Standard I/O and descripteurs

Quand un programme est lancé on lui attribue automatiquement 3 descripteurs de fichiers.

2.3.1.                     Entrée standard (stdin)

Par défaut le clavier

file descriptor 0

2.3.2.                     Sortie standard (stdout)

Par défaut le terminal.

Sortie des programmes écrite dans stdout pour affichage.

file descriptor 1

2.3.3.                     Erreur standard (stderr)

Utilisé exclusivement pour les erreurs. Par défaut attaché au terminal comme stdout (même affichage ce qui peut entraîner confusion)

file descriptor 2.

 

 

2.4.  Utilisation des tubes redirections et unix streams

Tout est fichier lecteur disque, partition, sourie, terminaux .. tous mappés dans le système de fichier

 

2.4.1.                     Pipes

 

Il est possible d'attacher la sortie d'un programme à l'entrée d'un autre programme avec |.

Plus de 2 commandes liées => pipeline

 

ls -i * | awk '{print $1}' | sort -nu | less => à tester

 

Cat myfile.txt | sort | uniq | wc –l

Classe la sortie du fichier myfile par ordre alphabétique puis uniq supprime les doublons, enfin wc –l affiche le nombre de lignes.

 

2.4.2.                     Redirection

Revoir cette partie

 

Redirection de stdout

> Création d'un fichier (écrase l'original si le fichier existe déjà)

Ø       ls -i * | awk '{print $1}' | sort -nu > in.txt => même commande redirigée vers un fichier.

Dans cet exemple stderr toujours affichée à l'écran.

 

>>   ajout à la fin d'un fichier existant echo "end of list" >> in.txt

 

Redirection de stdin Permet d'utiliser autre chose que le clavier (un fichier par ex) pour alimenter l'entrée standard. mail -s "inode list" frank < in.txt => envoie d'un mail à frank avec le contenu du fichier in.txt

envoyer stdout dans fichier

cmd > fichier cmd 1 > fichier

stderr dans fichier

cmd 2 > fichier

stdout et stderr dans fichier

cmd > fichier 2>&1

stdout fichier1 stderr fichier 2

cmd > fichier1 2> fichier2

recevoir stdin d'un fichier

cmd < fichier

ajouter stdout à un fichier

cmd >> fichier cmd 1>> fichier

ajouter stdout et stderr à un fichier

cmd >> fichier 2>&1

pipe stdout et stderr de cde1 à cde2

cmd1 2>&1 | cmd2

 

2.4.3.                     tee

Permet d'envoyer la sortie d'un programme vers un fichier et d'afficher la sortie à l'écran aussi.

 

Lecture à partir de stdin et écriture dans un fichier et stdout

-a => ajoute à un fichier plutôt que de l'écraser

 

Exemple

 

cmd1 | tee file_cmd1 | cmd2 | cmd3 > file1

=> permet d'avoir le résultat intermédiaire de la cmd1 placé dans un fichier séparé (file_cmd1).

 

 

 

2.5.  Gérer les processus

 
Les processus

 

Dans la plupart des cas les processus sont pilotés par le kernel. Tous les programmes sont considérés comme des processus par le kernel (le shell, chaque commande lance un ou plusieurs processus). Ils sont caractérisés par :

 

·         temps de vie => parfois très court ex ls à la fin de l'exécution le processus est tué

·         PID => nombre entier

·         UID - GID => permet de limiter l'accès des processus au système de fichiers.

·         processus père : init n°1

·         environnement : chaque processus possède une liste de variables définissant son environnement (en général hérité du processus père, ou définit lors de l'exécution d'un script de démarrage)

·         un répertoire de travail courant : c'est à dire un répertoire par défaut associé à chaque processus (il ira ensuite y créer ou chercher des fichiers)

 

Plusieurs processus peuvent être exécutés simultanément sur Linux, ce qui en fait un système multitâches.

 

 

CRTL C

Arrêter un processus 

 

CRTL Z

Stopper un processus  (il est en pause)

 

&

Lancer des process en background en ajoutant le signe ex xeyes &v (équivaut à CTRL Z + bg)

 

 

 

2.5.1.1.bg

faire des tests sur ces deux commandes

Background => le process s'exécute sans monopoliser le terminal.

 

Permet de passer le process en background comme si il avait été lancé avec &, mais il faut d'abord l'interrompre avec ctrl Z ou TSTP

2.5.1.2.fg

Permet de placer le process en premier plan (s'utilise avec le n° de job ou le job courant )

 

2.5.1.3.JOBS

 

La commande jobs liste les processus actifs en background sur le terminal sur lequel la cde est lancée.

Le signe + signifie le process courant (celui qui sera concerné par une cde fg ou bg)

-l => affiche aussi le n° de pid Lorsqu'un processus est lancé un numéro de job lui est attribué en plus du pid de manière séquentielle.

On peut lancer des process en background en ajoutant le signe ex xeyes & => donne le n° de job et le pid

 

 

2.5.2.                     La surveillance des processus

 

 

2.5.2.1.ps

 

Permet de lister les processus.

Par défaut, seuls les processus de l'utilisateur courant et du shell courant (donc les démons lancés sans terminaux ne sont pas listés)
  (à tester - pour le shell courant ou bien ceux qui ont un shell ?)

 

-a

liste aussi les processus appartenant aux autres utilisateurs

-u

user indique le noms des utilisateurs de processus (cad celui qui l'exécute)

-x

Liste aussi les processus sans terminaux de contrôle associés Souvent nécessaire pour voir les démons et autres processus non lancés à partir d'un terminal.

-f

affiche la famille de processus ou  encore   -- forest

- l

format long, indique les priorité, parent id et autres infos

-C

cmd commande exemple ps -C httpd => liste tous les processus serveur web
=>. identique à ps -aux|grep httpd tiret indispensable

U

user pour lister les processus d'un utilisateur (tiret interdit ) à vérifier en test

-w

wild format large (utile pour l'option -f)

 

 

En fait il y a trois différentes sources d'options : unix98 avec tiret, bsd sans tiret et gnu avec deux tirets.

On utilise souvent ps -aux

2.5.2.2.pstree

Cette commande est similaire au mode forest de ps -f.  Affiche la hiérarchie des processus dans un arbre. Très utile pour connaître la relation entre les processus.

 

Par défaut affiche l'arbre à partir du processus init (père pid 1) mais en spécifiant un pid l'arborescence débutera à partir de ce pid . Si un utilisateur est spécifié tous ses processus seront listés.

 

-a

affiche la commande de lancement du processus

-p

inclus le pid

-G

autre mode d'affichage

-h

surligne le processus actuel

-n

trie par pid au leu d'un tri alphabétique par défaut

-c

désactive le compactage
(httpd----5*[httpd] Pour un gain de place le 5 indique le nombre de processus identiques au lieu de les afficher tous )

 

 

2.5.2.3.top

Permet d'afficher l'état des processus et comment ils utilisent le système, en continu. Par défaut les processus sont affichés en fonction de leur consommation cpu.

 

 

tiret non obligatoire

-b

utilisation en mode batch / utile pour envoyer le résultat dans un fichier

-d

spécifie le délai en seconde avant mise à jour ex d 10 (par défaut 5 secondes)

 

-i

ignore les processus idle "en attente"

-n

effectue le nombre de rafraîchissement spécifié et se ferme ex n 6 (6 maj avant fermeture)

-q

maj continue priorité maximale => baisse des performances du système intérêt ?

-s

mode secure pour éviter les commandes interactives dangereuses sous root.

 

 

 

Une fois la commande lancée il est possible d'envoyer des commandes interactives

 

ctrl l

pour rafraîchir l'écran

h

écran d'aide

k

tuer un processus

n

pour indiquer le nombre de processus à afficher

s

changer le délai de maj en seconde

r

modification de la priorité d'un pid voir plus bas

 

 

 

 

Exemples top bin 5 d 1 > file1   à tester

=> utilisation en mode batch permet de faire une re direction, seuls les processus actifs sont listés, 5 rafraîchissements / toutes les 1 secondes.

top qi => affiche les processus actifs avec le niveau de priorité maximum (grosse conso cpu)

 

 

2.5.3.                     Les signaux

Chaque signal correspond à un nom et à un chiffre

 

HUP

1

Permet la relecture d'un fichier de configuration. Utilisé à la connexion ou déconnexion de modem

INT

2

interruption = ctrl c

KIll

9

Ne peut pas être ignorer par le processus

TERM

15

Utilisé pour demander un process de s'interrompre de manière courtoise.

TSTP

18

Pause = ctrl Z

STOP

19

Pause = ctrl Z

CONT

 

permet de reprendre après la pause

 

on peut aussi ajouter le préfixe SIG devant le signal ce qui donne par exemple SIGHUP

 

L'options nohup permet d'éviter l 'arrêt des process à la fermeture du shell

Ex au lancement du process nohup make &

2.5.3.1.Kill

 

Permet d'envoyer un signal à un processus.

 

Utiliser sans autre paramètre envoie par défaut un signal TERM (pour quitter proprement)

-l pour connaître le nom de signal correspondant au numéro ex kill -l 15 renvoie TERM

 

Tous ces exemples envoient un signal de coupure propre aux process 1000

kill 1000

kill -SIGTERM 1000

kill -sigterm 1000

kill -TERM 1000

kill -s 15 1000

kill -s SIGTERM 1000

 

Cette commande s'avère parfois insuffisante lorsque un process désobéit (souvent pour des raisons liées au hard) on utilise le big hammer.
 

kill -KILL 1000 ou kill -9 1000 => le process ne peut ignorer ces commandes qui entraînent la fermeture des processus sans aucune précautions.

 

kill -HUP `cat /var/run/inetd.pid` => relecture du fichier de configuration par le superdemon inetd. Le shell  remplace les backward quotes par le contenu du fichier inetd.pid.
La commande kill est implémentée comme une commande binaire standalone et comme une commande intégrée au shell. Les zombies sont des processus listés qu'il est impossible de tuer car ils sont déjà morts mais toujours listés par ps ou jobs ils sont le signe d'un bug.

Tuer un processus peut aussi fermer ses processus fils.

 

2.5.4.                     Modifier la priorité d'exécution des processus

 

Chaque processus possède un niveau de priorité d'exécution.

On peut l'afficher avec top ou ps -l (dans le champ NI). Seul root peut augmenter la priorité d'un processus en attribuant une valeur négative avec nice.

Range -20 => + 19 (par défaut les processus utilisateurs sont crées avec un priorité de zéro) Plus le chiffre positif est élevé moins la tâche est prioritaire.

2.5.4.1.nice

 

Permet de modifier la priorité au lancement du processus.
Pour utilisateurs de 1 à 19 pour root de -20 à 19.  Sans précision nice attribue 10 par défaut. Sur nice le tiret est indispensable pour spécifier le n° de priorité # renice

 

Exemples

nice find / name frank => lance la commande avec une priorité réduite (10)

nice - -10 vi /etc/hosts.deny => lancent vi avec une forte priorité

nice -n -10 vi /etc/hosts.deny

2.5.4.2.renice

Permet de changer les priorités alors que le processus est déjà lancé.
Sur renice le tiret n'est pas indispensable pour spécifier le n° de priorité

 

u

la cible est alors un nom d'utilisateur (tous les processus de cet utilisateur seront affectés)

p

Les cibles sont les pids (par défaut)

 

 

 

Exemples

renice 20 1000 => diminue au maximum la priorité du processus 1000

 

renice -10 -u jdean -p 1000

=> la priorité des tous les processus de james dean et du pid 1000 est relevée à -10

 

Il est également possible de modifier les priorités dans top en mode interactif en tapant r .

 

2.6.  Utilisation des expressions régulières regex

 

Contrairement aux globings qui sont limités aux commandes les regex ont une utilisation beaucoup plus large (fichiers, streams, chaînes de variables de programme)

 

Deux outils importants pour l'utilisation des regex grep et sed

2.6.1.                     grep

 

Permet de trouver une expression régulière dans les lignes d'un fichier ou l'entrée standard.

syntaxe [option] regex [files]

 

-c

Count affiche simplement le total des lignes correspondant à la recherche et le nom des fichiers -

-i

Insensitive ignorer la casse

-n

ajoute le numéro de ligne / très utile pour retrouver l'expression dans les gros fichiers

-h

supprime les préfixes de nom de fichiers affiche simplement l'expression trouvée

-v

affiche les lignes qui ne correspondent pas = inverse l'affichage

 

Exemples

grep -i linux file1 => affiche les lignes contenant linux ou Linux dans le fichier file1 Utilisation des quotes pour échapper les méta caractères

grep 'abc*' abc* ou grep "abc*" abc* recherche des lignes contenant abc ou abcc dans les fichiers abc abcc etc (échappement sur le regex mais pas sur le nom des fichiers) Il vaut mieux échapper pour être sur du résultat.

2.6.2.                     sed

ajouter lien vers autre chapitre sur sed

Exemples

sed '/^$/ d' file1

=> affiche le contenu de file1 sauf pour les lignes vides (représentées par ^$) la commande d de sed permet des les supprimer.


'/#frank/!' d

détruit les lignes ne contenant pas #frank attention le ! doit se trouver après le deuxième slash(le fichier original n'est pas modifié mais on peut rediriger le résultat vers un autre fichier

> monfichier.bis


sed '/^[.#]/d file1 > bis.txt
=> détruit les lignes commençant par un point ou un dièse et renvoie la sortie vers le fr bis.txt

sed 's/ */ /g' file1

substitue un espace à un nombre indéterminé d'espaces (dans mon test a supprimer les espaces)

 

sed -s/franck/frank/g ' file1
 => remplace franck par frank

 

Comme pour grep il est préférable de mettre des quotes pour éviter au shell d'interpréter les méta caractères comme des caractères globbings. Caractères ayant besoin d'être échappés :

+

.

*

[

]

\

 

Différentes formes d'échappement

 

 

\ backslash ex grep abc\* abc abc1

 

' ' single quotes traite tous les caractères à l'intérieur des guillemets / recommandé

 

" " comme single mais moins efficace car ' $ et \ font exception

 

2.6.3.                     ou [] ex grep dev[.]hda /etc/fstab ou grep dev\.hda Expressions régulières regex

Concept similaire aux globs mais beaucoup plus de possibilités (+de caractères). Les chaînes de caractères comprennent les méta caractères et les literals et trois types de spécification.

anchor position, groupes et range et modifiers. Anchors servent à décrire la position de l'information.

 

^

indique le début de ligne (n'a du sens qu'en l'utilisant en début de regex)

$

indique la fin de ligne (n'a du sens qu'en l'utilisant en fin de regex)

 

 

Exemples

grep '^linux' file1

=> affiche toutes les lignes dans lesquelles linux apparaît en début de ligne

 

grep 'x$' file1

Affiche toutes les lignes se terminant par x

 

grep -c '^$' file1

affiche le nombre de lignes vides (ne comportant rien entre le début et la fin)

 

grep '^null$' file1

affiche les lignes ne contenant que le texte "null"

 

Groupes et ranges

[abc]

un caractère unique parmi les trois

[a-z]

un caractère entre a et z identique aux wildcards/globbing

[^abc] [^a-z]

recherche inverse : un caractère unique ne figurant pas dans les ranges (à ne pas confondre avec la position ^ ) c'est l'équivalent de [!] pour globs

\<word>\

mot caractérisé comme étant entouré d'espace ou en début de ligne.

.

tout caractère unique sauf nouvelle ligne (équivalent à ? dans glob)

\

échappement du caractère qu'il précède

 

Exemples

grep '[Ll]inux' file1
affiche toutes les lignes contenant au moins un l ou L => linux Linux turbolinux

grep '\<[Ll]inux\>' file 1
affiche les lignes contenant le mot linux ou Linux mais pas turbolinux (attention à la deuxième barre oblique avant le sup)

grep '[0-9][0-9][0-9]' file1

affiche les lignes contenant trois chiffres adjacents

 

grep '^[^0-9]' file1
affiche les lignes ne commençant pas par un chiffre .
attention au piège, les ^ signifie la position début de ligne mais aussi l'inverse comme !

grep '......' file 1
 
=> affiche les lignes contenant six caractères ou +

Modifiers

*

zéro ou plusieurs fois le caractère précédent

?

zéro ou une instance du caractère précédent utilisable uniquement avec l'option -E de grep

+

zéro ou une instance de l'expression régulière précédente utilisable uniquement avec l'option -E de grep

\{n,m\}

entre n et m occurrence du caractère ou de l'expression précédente

|

l'expression spécifiée devant ou après le signe vertical

 

utilisable uniquement avec l'option -E de grep

 

Exemples

grep 'abc*' file 1

 => toutes les lignes contenant ab et zero ou plusieurs fois c ( abi sera affiché car zéro fois c compte) zero ou plusieurs occurences du caractère précédant

grep 'abcc*' file1

toutes les lignes contenant abc abcc abccc mais pas ab

 

grep '[0-9] [0-9] [0-9] *' file1

toutes les lignes contenant 2 chiffres adjacents ou plus

 

grep '^1\{3,5\}$' file 1

=> affiche les lignes contenant 111, 1111 et 11111 uniquement sur la ligne ( 11111111 sera donc exclu)

grep -E '[Ff]rank| [Hh]appy| [Ss]ad' file1

=> lignes contenant frank ou Frank ou Happy etc (ne fonctionne pas ??)

2.6.4.                     Expressions régulières basiques

 

[a-zA-Z]

match n'importe quelle lettre

[^0-9a-zA-Z]

match n'importe quel symbole non lettre ou chiffre

[A-Z] [a-z]*

match une majuscule suivie de zero ou plusieurs minuscules

'[0-9]\{3\} - [0-9]\{4\}

match chiffre du type 444-5555 ou 112-5456

June?

match 0 ou une instance de e après Jun

 

 

             

syntaxe identique au globs mais fonctionnement différent

$ spécifie les fins de ligne grep c $ /etc/fstab => affiche les lignes se terminant par un c.

(attention ici le $ est placé derrière le signe recherché !)

3.   Linux file system and FHS

 

3.1.  Système de fichiers & partitions

3.1.1.                     Interface IDE

Une interface IDE permet de connecter deux disques durs (un master et un slave).

En général les pc sont équipés de 2 interfaces IDE en standard. ==> 4 disques possibles (souvent 1 dd et un cdrom en standard)

 

Notation des systèmes IDE

 

/dev/hda primay master IDE souvent 1 dd

/dev/hdb primary slave IDE

/dev/hdc secondary master IDE souvent 1 cdrom

/dev/hdd secondary slave IDE

 

Interface SCSI

 

/dev/sda premier périph scsi

 

3.1.2.                     Partitionnement du disque

 

On peut créer un système de fichier avec la commande mkfs ou mke2fs

 

Types de partitions

 

Principale : max 4 partitions - dont une active /  /dev/hda1 - hda2 - hda3 - hda4

 

Etendue : 1 max / ne peut contenir que des partitions logiques / si elle existe elle prend la place d'une des 4 primaires possibles / si une primaire notée /dev/hda2

 

Logiques : de 1 à 12 partitions à l'intérieur de l'étendue, numérotées de 5 à 16 ex hda5

 

Les partitions recommandées sur un système linux  / à revoir avec pdf

 

/   ==> seul système de fichiers monté au boot

/dev/hda1 primaire

/dev/hda2 étendue

/boot image du kernel

/dev/hda5 logique

 

/tmp fichiers temporaires / évite débordement

/dev/hda6 logique

/home fichiers utilisateurs 7 /var évite débordement des logs 8 /usr doc / cdes utilisateurs 9 /swap partitions primaire 10

 

Comme / est le seul système monté au démarrage, un certain nombre de répertoires utilisés lors du boot doivent y figurer : /bin et /sbin binaires /dev device files / fichiers /etc information de configuration du boot /lib librairies des programmes.

3.1.2.1.fdisk

reprendre p 76 => 92

3.2.  Maintenir l'intégrité du système de fichier

Certains problèmes peuvent survenir sur les systèmes de fichiers :

 

 

La surveillance régulière des systèmes de fichier s'avère donc indispensable.

3.2.1.                     Surveillance de l'espace libre et des inodes

 

Les inodes représentent la structure des données qui décrivent les fichiers à l'intérieur filesystem.

 

Chaque système de fichier contient un nombre déterminé (à la création du système) d'inodes. Ce nombre désigne aussi la quantité maximum de fichiers qui pourront être crées (un manque peut donc se produire en présence de très nombreux petits fichiers)

 

 

3.2.1.1.df

 

Affiche les informations d'utilisation des systèmes de fichier montés. Par défaut contenu de /etc/fstab

 

-h

human affichage humain avec Mo et Go

-i

Affiche informations sur les inodes
=> L'intérêt est de comparer le pourcentage d'espace utilisé avec celui des inodes utilisés.
par ex pour une partition utilisée à 55% avec un pourcentage d'inodes de 14 % => à l'évidence la partition sera pleine avant que les inodes ne viennent à manquer

 

3.2.1.2.du

 

Affiche la quantité d'espace utilisé de manière récursive. Par défaut le répertoire courant.

 

-a

affiche tous les fichiers pas simplement les répertoires

-c

affiche le total général

-h

human mode

-s

summary (Total du répertoire en résumé)

-S

exclu les sous répertoires du total

 

Exemples

 

du -Ss /etc                             => total en résumé de /etc sous répertoires exclus

du -csh /home/*                   => affiche pour tous les fichiers le total par répertoire en format humain

du -cs /home/* | sort -nr     => la même cde en affichant un classement par ordre décroissant des tailles (sort ne connais pas le format humain).

 

3.2.2.                     Vérifier l'intégrité du système de fichier

 

En cas de coupure de courant les opérations les données en transit peuvent être perdues et l'espace alloué à ces données marqué comme utilisé, de plus les écritures du filesystem sont mises en cache, ce qui peut empêcher le noyau de synchroniser le cache et le disque. Cela entraîne une inconsistance du système de fichier

 

3.2.2.1.fsck

 

Pour vérifier ou réparer le système de fichier.

C'est un front-end (interface graphique ) de fsck.ext2 qui est un lien sur e2fsck.

 

Vérifie l'intégrité du système de fichier et interroge pour demander instruction de réparer (par défaut système ext2)

-A

all vérification de tous les systèmes de /etc/fstab option utilisée au boot (fsck -A)

-N

Notice n'exécute pas mais indique ce qui sera fait

-t

type Pour indiquer le type de système de fichier à vérifier (ce qui entraîne l'utilisation d'un outil spécifique e2fsck en est un)

 

Fuo pour e2fsck

 

-b

superblock utilisation d'un superblock alternatif pour restaurer un superbloc défectueux (en général -b 8193)

-c

Check vérification des blocs défaillants

-f

force la vérification même si le filesystem parait clean

-p

prompt réparation automatique sans prompt

-y

yes répondre oui à tous les prompts interactif ==> équivalent à un mode non-interactif

 

 

Exemples

 

fsck /dev/hda5         => vérification de la partition dev/hda5 qui n'est pas montée / si la partition est clean fsck ne la vérifie pas vraiment.

 

fsck -fv /dev/hda5    => force la vérification en mode verbeux.  Au boot tous les systèmes de fichier mal démontés sont vérifiés. En cas d'erreurs trouvées la seule solution abordable consiste à laisser fsck (-y) s'exécuter et à prier.

 

3.3.  Permissions et droits d'accès

3.3.1.                      Plusieurs systèmes de notation

 

octal 7644

symbolique rws r-s r-t

Binaire 110 110 100 101

 

S et T majuscules si le fichier n'est pas exécutable (ce qui ne sert à rien)

 

Permission

Fichier

Répertoire

R

lecture du contenu du fichier
 

Lister le contenu du répertoire

W

écriture ou modification du fichier

Créer et supprimer fichiers dans le répertoire

X

exécuter en tant que programme

Lire et écrire fichiers contenus dans le répertoire

 

 

Pour supprimer un fichier le droit d'écriture sur le fichier lui même n'est pas nécessaire, mais il faut le droit d'écriture sur le répertoire.

 

Pour lire un fichier le droit de lecture sur le fichier lui même n'est pas suffisant il faut aussi le droit r sur le répertoire.

 

3.3.2.                     Droits spéciaux

 

 

3.3.2.1.suid (set user ID)

Concerne uniquement les fichiers exécutable (pas les reps) Le fichier doit pouvoir être exécutable pour que cela ait du sens (x).
Permet d'exécuter un programme avec les droits du propriétaire du fichier.

En général lorsqu'un utilisateur lance un programme le processus qui en résulte appartient à ce même utilisateur. ex lpr (spool impression)

 

Par exemple l'exécutable /usr/bin/passwd qui permet de modifier des mots de passe a les droits suivants : - r-s --x --x =>  permet aux utilisateurs d'exécuter ce programme avec l'identité root, ce qui permet de pouvoir écrire dans le fichier /etc/passwd (droits rw- r-- r--)

 

Le s se positionne à la place du x de l'utilisateur.

Quelle est la différence avec sudo ?

 

valeur octale 4000

valeur symbolique s

3.3.2.2.sgid (set group ID)


Fonctionne de la même manière que pour le suid, le programme sera exécuté avec l'identité du groupe propriétaire du fichier.

 

Fonctionne sur les répertoires => si sgid activé sur un répertoire, tous les fichiers crées dans ce répertoire appartiendront au groupe propriétaire du répertoire.

 

exemple

sur le répertoire d rwx r-x r-x   frank   webmaster

 
chmod g+s test  => d rwx r-s r-x

si on crée un rep dans ce dossier il appartiendra au groupe  webmaster

 

Le s se positionne à la place du x du groupe.

valeur octale 2000

valeur symbolique s

 

3.3.2.3.sticky (bit)

 

Surtout utile pour les répertoires.
Permet de protéger les fichiers d'un répertoire. De cette manière seuls le propriétaire du fichier ou le propriétaire du répertoire ou root peuvent effacer / renommer des fichiers de ce répertoire.

Utile pour le travail de groupe. Les membres peuvent créer et modifier des fichiers du répertoire mais pas les renommer ou détruire.

 

Pour un fichier il permet de garder une copie du fichier sur la partition de swap afin de pouvoir y accéder plus rapidement de plus l’utilisateur ne peut effacer que les fichiers qui lui appartiennent. Plus utilisé sur les pc récents.

 

S'applique uniquement sur le type other (user et group ne sont pas concernés)

Ce qui donne par ex rwx  rwx  rwt

valeur octale 1000

valeur symbolique t   => chmod + t   répertoire

n'a de valeur que si le répertoire est en x au départ si ce n'est pas le cas on obtient T (inutile)

3.3.3.                     Umask

à compléter / apparemment avant de consulter umask le système utilise des droits par défaut ? Dans quel script de démarrage umask est il employé sur redhat ? Comment modifier umask sur un rep ?

Permet de définir les droits par défaut des nouveaux fichiers. Fonctionne à l'inverse de l'attribution des droits.

On indique les droits que l'on veut masquer.

 

Exemples

 

umask 2          ==> s'applique au shell courant peut être réécrit

umask  022    ==> les droits w sont masqués pour group et others

 

Pour un umask personnalisé on peut entrer la commande dans un script de démarrage (par ex .bash_profile).

 

3.3.4.                     chmod

 

 

attribution : - + ou =

u

User

 

g

group   

 

o

other – les autres utilisateurs

 

R

récursif

a

All toutes les classes

           

 

 

revoir droits X p111

 

Exemples

 

Modification des droits récursive avec filtre

Ex modifier tous les dossiers en 777

. find –type d    -exec chmod – R 777 {} \;

 

chmod o+t mon_rep ==> sticky bit positionné sur mon_rep

 

chmod go-w mon_rep           ==> supp w sur group et other

 

chmod a=rw mon_rep           ==> r et w pour tous

 

3.3.5.                     chown

 

Plusieurs syntaxes possibles :

1. chown options user-owner files

2. chown options user-owner. files

3. chown options user-owner.group-owner files

4. chown options .group-owner files

5. chown options --reference=rfile files

 

Syntaxe chown propriétaire.groupe fichier

 

exemple chown frank.webmaster mon_fichier

 

 

Utilisable uniquement par root. Permet de changer le propriétaire et le groupe d'un fichier ou répertoire. Les changements de groupe peuvent être effectués par un membre appartenant au group-owner. à vérifier

 

- v

 mode verbeux

 

-c

comme verbose mais seulement un rapport des changements effectués

- R

 mode récursif

 

 

 

 

 

Options courantes

 

 

Exemple

chown  -v frank fichier_test

chown -v frank .admin fichier_test (owner + group) ou le groupe seul ==>

 

chown -Rv .admin mon_rep (changement de groupe (admin) récursif pour tous les fichiers de mon_rep.

3.3.6.                     chgrp

Syntaxe identique à chown

3.3.7.                     usermod

Permet d'affilier un utilisateur à un groupe.

 

usermod -G afpa frank

 

3.4.  Liens softs / hards

 

Permettent de mettre à jour des fichiers plus rapidement (seul le fichier original devra être modifié et tous les liens seront mis à jour) économise de l'espace disque. Exemples des liens symboliques des répertoires /etc/rc.d/rcX.d pointant vers les scripts originaux de /etc/init.d. Exemple des sources de linux /usr/src/linux

 

 

Par défaut création d'un lien hard avec la commande ln on commence donc par le lien hard ! mais ce n'est pas celui la que l'on rencontre le plus souvent.

3.4.1.                     Liens hards


Basés sur les inodes. Un inode peut avoir un nombre infini de liens hards.

Excepté par son nom, le lien hard n'est pas distinguable du fichier original.

N'apparaissent pas comme des liens avec ls -l # des liens softs.

 

Avantages

 

·         Pointe sur le même inode que le fichier original (c'est une copie)
=> si le fichier original est détruit le lien reste bon

Faiblesses

 

·         Doivent résider sur même système de fichier

·         Ne peuvent pointer sur des répertoires

 

3.4.2.                     Liens softs

 

Plus souple que les hards donc plus utilisés. Basés sur le Path (absolu ou relatif chaque type de path a ses propres avantages).

 

Utilisés par ex pour créer un nom différent pour un programme,

 

Exemples des liens symboliques
les répertoires /etc/rc.d/rcX.d pointant vers les scripts originaux de /etc/init.d

 

 

Avantages

 

·         peuvent pointer vers d'autres systèmes de fichiers,

·         peuvent pointer vers un répertoire

 

Faiblesses

 

·         numéro d'inode différent de celui du fichier lié.
=> Si le fichier original est détruit le lien est dit stale ou cassé.

 

 

Egalement appelés "symlinks"

Si on liste les symlinks d'un répertoire avec ls  -l  on obtiendra une ligne du type
lrxwrxwrxw  1 root root  16 janv  1    14:35   nom_du_lien - -> path_de_la_source

 

 

3.4.3.                     Actions sur les liens
 

3.4.3.1.Créer des liens



Syntaxe :               ln  (cible)    (nom du lien)

Cible sur laquelle le lien doit pointer

 

Par défaut création d'un lien hard
options -s pour un symlink

 

Exemple  ln -s /etc/init.d/httpd    /etc/rc.d/rc3.d/S45httpd
(création d'un lien symbolique dans le rep rc3.d à partir du script httpd du répertoire init.d

 

 

3.4.3.2.Copier des liens

 

Par défaut cp copie le contenu du fichier lié, pour copier le lien lui-même il faut donc ajouter l'option -d (dereference) ex cp -d mon_lien


En cas de sauvegarde avec Tar normalement cet utilitaire prends en compte les liens afin d'éviter les données redondantes en cas de sauvegarde.

3.4.3.3.Rechercher des liens

 

Symboliques

Pour connaître tous les symlinks (du système de fichier) pointant sur un fichier on utilise l'option -lname de find ex find / -lname fichier_lié

 

 

 

Hards On recherche les liens grâce aux inodes, ls -i fichier_lié pour obtenir le N° d'inode, puis on utilise l'option -inum de find. find / -inum N°_inode

 

 

 

3.5.  Filesystem Hierachy Standard - FHS

 

Localiser les fichiers

Ce standard est composé de plusieurs hiérarchies de fichiers qui reprennent parfois la même arborescence.

3.5.1.                     /root filesystem

 

Sommet de la 1ère hiérarchie de fichiers. Seul système de fichier monté au boot.

 

·         Contient les fichiers et utilitaires nécessaires au boot (utilities, devices, files, configuration, boot loader information). Taille relativement petite (car petites partitions plus stable "less corrupted")

·         Contient les outils nécessaires pour réparer le système si nécessaire (maintenance)

·         Ne doit pas contenir de fichiers ou répertoires crées par des programmes.

 

3.5.1.1.Principaux répertoires les essentiels (nécessaire pour procédure d'urgence / réparation)

 

/bin

Commandes indispensables en cas de réparation

/dev

Device files ==> information sur les périphs hda, tty

/etc

Informations de configuration du système

/lib

Librairies partagées et modules kernels ==> essentiel pour initialiser le système

/mnt

Points de montage cdrom, floppy

/root

Espace root (pratique car en cas de problème les fichiers de configuration seront accessibles)

/sbin

Outils d'administration essentiels de root fdisk, fsck; mkfs

 

3.5.1.2.Les non essentiels

/boot

Fichiers pour lilo (toléré sur root car peu encombrant) cependant souvent sur une partition séparée afin de permettre aux fichiers du boot loader de rester dans les 1024 premiers cylindres.

/home

Représente les fichiers utilisateurs. Souvent filesystem séparé

/opt

Emplacement choisit par les fournisseurs, pour installation des softs non livrés avec la distribution

/tmp

Fichiers temporaires / effacés à chaque boot

/usr

En général partition séparée (voir section suivante)

/var

En général partition séparée (voir section suivante)

 

Rem : lorsque /usr ou /var sont montés sur un système de fichier indépendant, le répertoire /usr ou /var de l'arborescence standard est utilisé comme point de montage. Ils seront vides si la système /usr ou /var sont démontés.

3.5.2.                     /usr filesystem

Sommet de la seconde hiérarchie de fichiers ==> on retrouve la plupart des répertoires de root. Contient les outils non contenus dans root (non indispensable pour la maintenance/réparation du système). Ne contient pas de programmes sauf pour Xfree.

 

/usr/bin

Commandes non indispensables pour la maintenance

/usr/include

Fichiers headers et include utilisés en C et C++

/usr/lib

Librairies partagées pour différents programmes ex perl5

/usr/local

3ème sommet de hiérarchie de fichier dédié à l'utilisation de l'admin Contient des sous rep identiques à ceux de /usr ( /usr - /bin - /include -/lib -/ sbin)

/usr/sbin

Commandes non indispensables pour la maintenance

/usr/src

Code source de linux. Si fichiers de dev du kernel installés ==> on y trouve fichiers de configuration et source nécessaires à la construction d'un nouveau noyau.

 

3.5.3.                     /var filesystem

 

Données variables ==> Printer spools, mail, logs. Généralement sur filesystem séparé car peuvent grossir de manière nuisible.

 

/var/lock

Emplacement des fichiers verrous (lock files) utilisé par apps pour signaler leur existence à un autre processus. Généralement pas de données.

/var/mail

Boite du système avec des fichiers pour chaque utilisateur. Parfois /var/spool/mail sur vieux systèmes

/var/opt

Fichiers temporaires des apps de /opt

/var/num

Fichiers décrivant l'état du système (en général détruits au reboot) * Fichiers PID (N° pid des processus ex httpd.pid) utilisé par certains utilitaires nécessitant le pid. * fichiers utmp utilisés par commandes who et last (affichage logged-in-users)

/var/spool

Informations en attente ex file d'impression, mail sortants et fichiers crontab

/var/tmp

Comme /tmp mais pour des fichiers + persistants (non effacés au reboot)

 

 

 

 

 

 

 

 

3.5.4.                     Résumé de l'emplacement des binaires

 

Commandes utilisateurs

Commandes admin

Essentielles pour réparation ( livrées avec distribution)

/bin

/sbin

Non essentielles pour réparation ( livrées avec distribution)

/usr/bin

/usr/sbin

Non Essentielles pour réparation (programmes ajoutés)

utilisation en local

/usr/local/bin

/usr/local/sbin

 

3.6.  Localiser les fichiers

 

Plusieurs commandes permettent de localiser des fichiers. Elles ne fonctionnent pas toutes de la même manière. Which cherche dans la variable PATH, Find recherche dans l'ensemble de l'arborescence et Locate whatis et apropos utilisent des bases de données.

3.6.1.                     which


Uniquement valable pour les fichiers exécutables.

Détermine si une commande se trouve dans le PATH.


 

exemple which ls   => /usr/bin ls

Attention il faudra taper which –a ls pour obtenir toutes les occurrences de la commande ls dans le path.
/usr/bin/ ls
/bin/ls

 

3.6.2.                     find

Toujours remonter à la racine / avant d'effectuer une recherche pour que ça marche
ex find / -name xxx

 

 

exemple

commentaire

glob

find / -name readme \*

Il faut échapper l'astérisque avec le backslah

Case insensitive

Find / -iname readme\*

Pour ne pas tenir compte de la casse

 

 

 

wildcards

find / -name "*csh*"

Si les wildcards sont utilisés l'usage des guillemets est impératif.

type

Find / -name vim –type l

b/block, c/caractère, d/répertoire, p/pipe, f/file, l/symb link, s/socket

size

Find /  –size –50c

Recherche les fichiers de moins de 50 octets
b
/block, c/bytes bit, k/kilobite 
par défaut bloc de 512 Octet

Time

Find /  -mtime -1

Tous les fichiers crées durant les 24 dernières heures
Unité : Périodes de 24 heures

 

 

 

exec

find / -name readme  -exec ls '{}' ';'

ou

find src -name "*.c" -exec chmod g+w {} \ ;

Exécute la commande sur toutes les occurrences du fichier cherché. Doit se terminer par un ; entre quotes (ou échappé ex du dessous)

 

 

3.6.3.                     Locate

Cherche dans toute l'arborescence, utilisation des wildcards avec guillements. Fonctionne avec une base de donnée /var/lib/slocate/slocate.db # de celle de whatis.

Mise à jour de la base indispensable avec la commande
updatedb

 

Permet la création ou la maj de la base /var/lib/slocate/slocate.db  option -e ==> exclu de la base une liste de repertoires séparée par des virgules.

 

Souvent exécuté par cron. Le fichier updatedb.conf ==> pas vraiment un fichier de configuration mais sur certains systèmes permet d'ajouter des options supplémentaires à updatedb.

3.6.4.                     whatis


Syntaxe whatis keywords Recherche le terme exact.
Utilisation de la base whatis. Composée d'un ensemble de fichiers contenant une brève description du système de commandes. Création de la base par la commande makewhatis.

3.6.5.                     apropos

Syntaxe apropos keywords Recherche à partir d'une fraction du mot clef Utilise la base whatis.

 

3.7.  standalone

 

Mode de fonctionnement d'un démon. C'est un programme résidant (cad qui reste chargé en mémoire afin de pouvoir être utilisé plus facilement pour mener à bien une tache pendant l'exécution d'un autre application)

 

Programme résidant en mémoire par opposition au démon lancés par inetd (gérant les connexions reseau, ou xinetd) voir aussi xinetd.

#inetd

En standalone le demon est lancé au boot par le processus init

3.8.  tcpwrapper

 

Utilitaire permettant de contrôler l'accès aux démons. Configuration grâce aux fichiers hosts.allow hosts.deny inetd.conf. Par exemple pour restreindre l'accès aux services de inet.d à certains hotes

 

 

 

4.   Autres commandes

4.1.1.                      commande cut

cut / permet d'afficher une partie de fichier par exemple pour afficher les noms d'utilisateurs dans le fichier etc/passwd

 

cut -d: -f1 /etc/passwd

(-d: ==> spécifie le délimiteur ici ce sera ":" - -f1 ==> spécifie que l'on veut le premier champ)

4.1.2.                     commande tr

 

Translate par exemple pour afficher un fichier texte en transformant minuscules en majuscules cat file | tr a-z A-Z autre possibilité avec une redirection tr a-z A-Z < file

 

 

sudo

permet d'exécuter une commande ou un script en tant que root

ex sudo /sbin/service httpd restart 

tail

Affiche les 10 dernières lignes d'un fichier

head

Affiche les 10 premières lignes d'un fichier

nl

Ajoute un numéro de ligne

pr

Découpe les fichiers en plusieurs pages / utile pour l'impression

sort

Tri le résultat par ordre alphabétique

uniq

Supprime les doublons

wc

Affiche le nombre de lignes, de mots et d'octets

Tac

Affiche les fichiers dans l'ordre inverse de cat / commence par la dernière ligne

expand

 

unexpand

 

split

Découpage de fichier

awk

 

 

 

 

5.   X

Xfree86 implémentation de X pour linux.

 

X window system est un protocole réseau, il est donc possible d'avoir un client distant implémentant un serveur X se connectant sur un hôte distant.

 

 

 

 

 

 

6.   à classer

 

·         comment afficher/modifier le path

·         En fait il y a trois différentes sources d'options : unix98 avec tiret, bsd sans tiret et gnu avec deux tirets.

·         Utilisation des backward quotes kill -HUP `cat /var/run/inetd.pid` => relecture du fichier de configuration par le superdemon inetd. Le shell  remplace les backward quotes par le contenu du fichier inetd.pid

·         Exécution de plusieurs commandes successivement avec le point virgule => ls ; ps = execute ls puis ps

 

6.1.1.1.at

 

Permet de lancer une commande un jour donné, à une heure donnée. Une fois que cette commande a été exécutée, elle n'existe plus c’est la différence avec cron. La syntaxe des entrées est la suivante : at 12:30 11/30/00 déclenchera la commande le 30 novembre 2000 (le jour étant indiqué sous la forme mm/jj/aa. at now + 1 hour déclenchera la commande dans 1 heure à partir de maintenant. at 00:00 + 2 days pour exécuter la commande dans 2 jours à minuit. at 12:30 $ at 12:30 at>ping -c 1 192.168.0.1 at> ^D $ voir ce qui va se passer at -c 1 (1 étant le numéro d'ordre). commandes en attente at -l (ou atq). supprimer une commande en attente atrm 1 (pour supprimer le job 1).

 

 

 

6.1.1.2.raccourcis clavier

 

aller en fin de ligne ==> ctrl e

aller en début de ligne ==> ctrl a

 

clear screen ==> ctrl l

les rawhide : versions bêtas (de tests) de packages de RedHat

 

6.1.1.3.Versions

 

mysql version installée 3.23.47 dernière version 3.23.52 dev version 4

apache version installée 1.3.23 dernière version 2

php version installée 3.0.18 dernière version 4.2.3

redhat actuelle 7.3

 

Noyau linux
2.4 souvent rencontré

noyau actuel 2.6 depuis 2004

·          Gestion smp

·          Puces 64 bits

·          mémoire

 

 

 

Redhat

 

fedora

linux enterprise (noyau 2.6)