Outils pour utilisateurs

Outils du site


initiation_linux

Initiation Linux

L'identification d'un utilisateur

Un utilisateur sous LINUX est reconnu du système par son User-Id, son numéro d'utilisateur. Chaque utilisateur appartient à un ou plusieurs groupes. Son groupe d'appartenance est repéré par le Group-Id.

user@machine: id	<- IDentité utilisateur
uid=223(dupont) gid=212(cicrp) groups=1(staff)

A un instant donné un utilisateur n'appartient qu'à un seul groupe. C'est son groupe “actif”. Tous les fichiers qui dès lors sont créés, possèdent comme groupe propriétaire le groupe courant à l'instant de la création. Un utilisateur appartenant à plusieurs groupes peut à tout instant changer son groupe courant, ce qui modifie alors le groupe propriétaire des fichiers créés par la suite.

user@machine: newgrp staff	<- Changement de groupe courant
user@machine: id
uid=223(dupont) gid=1(staff) groups=1(staff)
user@machine:

La Hiérarchie

Les répertoires de travail

Lorsque vous êtes connecté sous LINUX, vous vous retrouvez chez vous à savoir votre home directory qui a été assigné par l'administrateur système. Par exemple /home/cicrp/dupont

Tous les fichiers ou répertoires que vous allez créer, le seront sous votre home directory.

1) La racine (root) est représentée par le symbole “/”. C'est sous la racine que se situent tous les répertoires de LINUX.

2) Chaque sous-répertoire contient deux éléments appelés “.” et“..” qui assurent le lien entre les différentes branches de l'arborescence. Le point(.) désigne le répertoire courant, le “..” est un pseudonyme pour désigner le répertoire parent (parent directory) du répertoire courant.

3) Le répertoire de travail courant, le working directory, est le répertoire sous lequel vous êtes; vous pouvez vous déplacer dans la hiérarchie et il peut changer, il est représenté par le symbole “.”

Les chemins relatifs et absolus

Lorsque vous utilisez une commande qui agit sur un fichier par exemple, vous devez spécifier le chemin d'accès à ce fichier s'il n'est pas dans votre répertoire de travail; ce chemin d'accès est le path ou pathname; il consiste en une série de composants : des noms de répertoires, séparés par le symbole “/”

chemin absolu

La référence absolue d'un objet (fichier ou répertoire) se fait par la liste des répertoires traversés pour atteindre cet objet, en commençant par la racine.

Par exemple /home/cicrp/dupont/toto référence le fichier toto qui est sous le répertoire dupont lui même sous cicrp lui même sous home qui lui est sous la racine ce qui est indiqué par le premier “/”.

chemin relatif

La référence relative d'un objet (fichier ou répertoire) se fait par la liste des répertoires traversés pour atteindre cet objet, relativement au répertoire courant de travail (working directory).

Par exemple essai/fic1.p indique qu'à partir du répertoire de travail, on doit trouver un sous-répertoire essai contenant un fichier fic1.p

Les commandes courantes de manipulation

Commandes de manipulation de fichiers et de répertoires

Quelques commandes de manipulation des fichiers et des répertoires.

Commande pour fichierCommande pour répertoire
Afficher le contenucat (ou more)ls
Copiercpcp -r
Changer de nommvmv
Se déplacer dans cd
Supprimerrmrmdir ou rm -r
Créer mkdir
Nom rép. courant pwd
Déplacermvmv

La syntaxe générale d'une commande sous LINUX est la suivante : cmd -options arg1 arg2 arg…

  • cmd est la commande
  • -options les options de cette commande
  • arg1 arg2 ….. Les arguments de la commande

par exemple ls -ail rep1

Exemples

Pour savoir dans quelle répertoire on se trouve, utiliser la commande pwd :

user@machine: pwd    <- répertoire courant
/home/cicrp/dupont

Pour créer un répertoire, utiliser mkdir

user@machine: mkdir rep1	<- création rep1
user@machine: cd rep1	        <- déplacement rep1
user@machine: ls	        <- liste , mais rep1 vide
user@machine: ls -ail	        <- list All Inodes Long
total 8
89131 drwx------   2 dupont     cicrp        512 Dec 11 16:38 .
17422 drwxr-x---  10 dupont     staff       1536 Dec 11 16:38 ..

Lorsque l'on fait une erreur dans la syntaxe de la commande alors linux affiche le “mode d'emploi” de la commande :

user@machine: cp ../t*     <- erreur de syntaxe
Usage:  cp [-i] [-p] [-] SourceFile... {TargetDirectory|File}
        cp [-i] [-p] [-r] [-] SourceDirectory... TargetDirectory
user@machine: cp ../t* .   <- copie tous les fichiers du répertoiree
   précédent  (..) commençant par  t
   dans  le répertoire courant (.)

La commande ls permet de lister le contenu d'un répertoire :

user@machine: ls
terminfo.doc tessai1.p trace tessai titi trtr
user@machine: ls -ail
total 104
89131 drwx------   2 dupont  cicrp      512 Dec 11 16:39 .
17422 drwxr-x---  10 dupont  staff     1536 Dec 11 16:38 ..
89132 -rw-------   1 dupont  cicrp    54199 Dec 11 16:39 terminfo.doc
89133 -rw-------   1 dupont  cicrp      130 Dec 11 16:39 tessai
89134 -rw-r-xr--   1 dupont  cicrp       64 Dec 11 16:39 tessai1.p
89135 -rwx------   1 dupont  cicrp      425 Dec 11 16:39 titi
89136 -rw-------   1 dupont  cicrp    27505 Dec 11 16:39 trace
89137 -rws------   1 dupont  cicrp        0 Dec 11 16:39 trtr
      ^
      |
      +---------- dans cette colonne  "d" = directory    "-" = fichier

La commande cp permet de faire une copie d'un fichier ou d'un répertoire. L'option -r permet de faire une copie d'un répertoire et de son contenu.

user@machine: cp -r ../info info  <- Copie Récursive du rep info
user@machine: ls -ail
total 108
89131 drwx------   3 dupont     cicrp        512 Dec 11 16:40 .
17422 drwxr-x---  10 dupont     staff       1536 Dec 11 16:38 ..
90114 drwx------   3 dupont     cicrp        512 Dec 11 16:40 info
89132 -rw-------   1 dupont     cicrp      54199 Dec 11 16:39 terminfo.doc
89133 -rw-------   1 dupont     cicrp        130 Dec 11 16:39 tessai
89134 -rw-r-xr--   1 dupont     cicrp         64 Dec 11 16:39 tessai1.p
89135 -rwx------   1 dupont     cicrp        425 Dec 11 16:39 titi
89136 -rw-------   1 dupont     cicrp      27505 Dec 11 16:39 trace
89137 -rws------   1 dupont     cicrp          0 Dec 11 16:39 trtr

La commande rm (remove) permet de supprimer un fichier ou un répertoire (avec l'option -r) :

user@machine: rm trtr    <- destruction fichier  trtr
user@machine: del trace  <- destruction avec confirmation
del: Remove trace?  y
yes
user@machine: ls info
notes
user@machine: ls -ail info
total 12
90114 drwx------   3 dupont     cicrp        512 Dec 11 16:40 .
89131 drwx------   3 dupont     cicrp        512 Dec 11 16:40 ..
90115 drwxr-x---   3 dupont     cicrp        512 Dec 11 16:40 notes
user@machine: cd info/notes    <- descente dans sous-rep notes du rep info
user@machine: ls 
user@machine: ls -ail
total 12
90115 drwxr-x---   3 dupont     cicrp        512 Dec 11 16:40 .
90114 drwx------   3 dupont     cicrp        512 Dec 11 16:40 ..
90116 drwxr-----   2 dupont     cicrp        512 Dec 11 16:40 .lost
user@machine: cd ../..	<- remonte de 2 niveaux 
user@machine: pwd
/home/cicrp/dupont/rep1
user@machine: cd info
user@machine: pwd
/home/cicrp/dupont/rep1/info
user@machine: ls -ail
total 12
90114 drwx------   3 dupont     cicrp        512 Dec 11 16:40 .
89131 drwx------   3 dupont     cicrp        512 Dec 11 16:40 ..
90115 drwxr-x---   3 dupont     cicrp        512 Dec 11 16:40 notes
user@machine: cd ..
user@machine: ls 
info terminfo.doc tessai tessai1.p titi
user@machine: ls -ail
total 80
89131 drwx------   3 dupont     cicrp        512 Dec 11 16:40 .
17422 drwxr-x---  10 dupont     staff       1536 Dec 11 16:38 ..
90114 drwx------   3 dupont     cicrp        512 Dec 11 16:40 info
89132 -rw-------   1 dupont     cicrp      54199 Dec 11 16:39 terminfo.doc
89133 -rw-------   1 dupont     cicrp        130 Dec 11 16:39 tessai
89134 -rw-r-xr--   1 dupont     cicrp         64 Dec 11 16:39 tessai1.p
89135 -rwx------   1 dupont     cicrp        425 Dec 11 16:39 titi
user@machine: mv titi tyty	<- changement de nom
user@machine: ls t*
terminfo.doc tessai tessai1.p tyty
user@machine: cp -r info info.new <- copie de répertoire, copie récursive
user@machine: ls -ail in*
info:
total 12
90114 drwx------   3 dupont     cicrp        512 Dec 11 16:40 .
89131 drwx------   4 dupont     cicrp        512 Dec 11 16:42 ..
90115 drwxr-x---   3 dupont     cicrp        512 Dec 11 16:40 notes
info.new:
total 12
90134 drwx------   3 dupont     cicrp        512 Dec 11 16:42 .
89131 drwx------   4 dupont     cicrp        512 Dec 11 16:42 ..
90135 drwxr-x---   3 dupont     cicrp        512 Dec 11 16:42 notes
user@machine: rmdir info    <- destruction répertoire si vide
rmdir: 0653-611 Directory info is not empty.
user@machine: rm -r info     <- destruction récursive
user@machine: ls -ail
total 80
89131 drwx------   3 dupont     cicrp        512 Dec 11 16:42 .
17422 drwxr-x---  10 dupont     staff       1536 Dec 11 16:38 ..
90134 drwx------   3 dupont     cicrp        512 Dec 11 16:42 info.new
89132 -rw-------   1 dupont     cicrp      54199 Dec 11 16:39 terminfo.doc
89133 -rw-------   1 dupont     cicrp        130 Dec 11 16:39 tessai
89134 -rw-r-xr--   1 dupont     cicrp         64 Dec 11 16:39 tessai1.p
89135 -rwx------   1 dupont     cicrp        425 Dec 11 16:39 tyty
user@machine: mv info.new info.nouveau
user@machine: ls -ail
total 80
89131 drwx------   3 dupont     cicrp        512 Dec 11 16:43 .
17422 drwxr-x---  10 dupont     staff       1536 Dec 11 16:38 ..
90134 drwx------   3 dupont     cicrp        512 Dec 11 16:42 info.nouveau
89132 -rw-------   1 dupont     cicrp      54199 Dec 11 16:39 terminfo.doc
89133 -rw-------   1 dupont     cicrp        130 Dec 11 16:39 tessai
89134 -rw-r-xr--   1 dupont     cicrp         64 Dec 11 16:39 tessai1.p
89135 -rwx------   1 dupont     cicrp        425 Dec 11 16:39 tyty
user@machine: cat tessai1.p    <- affiche contenu fichier
program tessai (input,output);
begin
writeln ('coucou');
end.

La commande lshw permet de lister tous les éléments matériels de l'ordinateur (cpu, mémoire, cartes etc…) :

user@machine: lshw				<- affiche la liste du matériel
user-virtualbox
  description: Computer
  width: 64 bits
  capabilities: vsyscall32
*-core
     description: Motherboard
     physical id: 0
   *-memory
        description: System memory
        physical id: 0
        size: 4GiB
   *-cpu
        product: Intel(R) Core(TM) 
i7-4710HQ CPU @ 2.50GHz
        vendor: Intel Corp.
        physical id: 1
        bus info: cpu@0
        width: 64 bits
        capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp x86-64 constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm invpcid_single pti fsgsbase avx2 invpcid md_clear flush_l1d
   *-pci
        description: Host bridge
        product: 440FX - 82441FX PMC [Natoma]
        vendor: Intel Corporation
        physical id: 100
        bus info: pci@0000:00:00.0
        version: 02
        width: 32 bits
        clock: 33MHz
      *-isa
           description: ISA bridge
           product: 82371SB PIIX3 ISA [Natoma/Triton II]
           vendor: Intel Corporation
           physical id: 1
           bus info: pci@0000:00:01.0
           version: 00
           width: 32 bits
           clock: 33MHz
           capabilities: isa bus_master
           configuration: latency=0
      *-ide
           description: IDE interface
           product: 82371AB/EB/MB PIIX4 IDE
           vendor: Intel Corporation
           physical id: 1.1
           bus info: pci@0000:00:01.1
           logical name: scsi1
           version: 01
           width: 32 bits
           clock: 33MHz
           capabilities: ide isa_compat_mode pci_native_mode bus_master emulated
           configuration: driver=ata_piix latency=64
           resources: irq:0 ioport:1f0(size=8) ioport:3f6 ioport:170(size=8) ioport:376 ioport:d000(size=16)
         *-cdrom
              description: DVD reader
              product: CD-ROM
              vendor: VBOX
              physical id: 0.0.0
              bus info: scsi@1:0.0.0
              logical name: /dev/cdrom
              logical name: /dev/dvd
              logical name: /dev/sr0
              version: 1.0
              capabilities: removable audio dvd
              configuration: ansiversion=5 status=nodisc
      *-display
           description: VGA compatible controller
           product: SVGA II Adapter
           vendor: VMware
           physical id: 2
           bus info: pci@0000:00:02.0
           version: 00
           width: 32 bits
           clock: 33MHz
           capabilities: vga_controller bus_master rom
           configuration: driver=vmwgfx latency=64
           resources: irq:18 ioport:d010(size=16) memory:e0000000-e0ffffff memory:f0000000-f01fffff memory:c0000-dffff
      *-network
           description: Ethernet interface
           product: 82540EM Gigabit Ethernet Controller
           vendor: Intel Corporation
           physical id: 3
           bus info: pci@0000:00:03.0
           logical name: enp0s3
           version: 02
           serial: 08:00:27:2e:c0:b0
           size: 1Gbit/s
           capacity: 1Gbit/s
           width: 32 bits
           clock: 66MHz
           capabilities: bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
           configuration: autonegotiation=on broadcast=yes driver=e1000 driverversion=7.3.21-k8-NAPI duplex=full ip=10.0.2.15 latency=64 link=yes mingnt=255 multicast=yes port=twisted pair speed=1Gbit/s
           resources: irq:19 memory:f0200000-f021ffff ioport:d020(size=8)
      *-generic
           description: System peripheral
           product: VirtualBox Guest Service
           vendor: InnoTek Systemberatung GmbH
           physical id: 4
           bus info: pci@0000:00:04.0
           version: 00
           width: 32 bits
           clock: 33MHz
           configuration: driver=vboxguest latency=0
           resources: irq:20 ioport:d040(size=32) memory:f0400000-f07fffff memory:f0800000-f0803fff
      *-multimedia
           description: Multimedia audio controller
           product: 82801AA AC'97 Audio Controller
           vendor: Intel Corporation
           physical id: 5
           bus info: pci@0000:00:05.0
           version: 01
           width: 32 bits
           clock: 33MHz
           capabilities: bus_master
           configuration: driver=snd_intel8x0 latency=64
           resources: irq:21 ioport:d100(size=256) ioport:d200(size=64)
      *-usb
           description: USB controller
           product: KeyLargo/Intrepid USB
           vendor: Apple Inc.
           physical id: 6
           bus info: pci@0000:00:06.0
           version: 00
           width: 32 bits
           clock: 33MHz
           capabilities: ohci bus_master cap_list
           configuration: driver=ohci-pci latency=64
           resources: irq:22 memory:f0804000-f0804fff
      *-bridge
           description: Bridge
           product: 82371AB/EB/MB PIIX4 ACPI
           vendor: Intel Corporation
           physical id: 7
           bus info: pci@0000:00:07.0
           version: 08
           width: 32 bits
           clock: 33MHz
           capabilities: bridge
           configuration: driver=piix4_smbus latency=0
           resources: irq:9
      *-sata
           description: SATA controller
           product: 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode]
           vendor: Intel Corporation
           physical id: d
           bus info: pci@0000:00:0d.0
           version: 02
           width: 32 bits
           clock: 33MHz
           capabilities: sata ahci_1.0 bus_master cap_list
           configuration: driver=ahci latency=64
           resources: irq:21 ioport:d240(size=8) ioport:d248(size=4) ioport:d250(size=8) ioport:d258(size=4) ioport:d260(size=16) memory:f0806000-f0807fff
   *-pnp00:00
        product: PnP device PNP0303
        physical id: 2
        capabilities: pnp
        configuration: driver=i8042 kbd
   *-pnp00:01
        product: PnP device PNP0f03
        physical id: 3
        capabilities: pnp
        configuration: driver=i8042 aux

Si le fichier est long et qu’on veut ajouter des pauses lors du défilement il faut ajouter « | more » à la commande :

user@machine: lshw | more

Autre commande utile : lspci.

user@machine: lspci    <- affiche la liste du matériel sur slot PCI
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:02.0 VGA compatible controller: VMware SVGA II Adapter
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
00:06.0 USB controller: Apple Inc. KeyLargo/Intrepid USB
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:0d.0 SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (rev 02)

Enfin lscpu permet de récupérer les infos sur le processeur :

user@machine: lscpu    <- affiche les infos sur le(s) processeur(s)
Architecture :                          x86_64
Mode(s) opératoire(s) des processeurs : 32-bit, 64-bit
Boutisme :                              Little Endian
Address sizes:                          39 bits physical, 48 bits virtual
Processeur(s) :                         1
Liste de processeur(s) en ligne :       0
Thread(s) par cœur :                    1
Cœur(s) par socket :                    1
Socket(s) :                             1
Nœud(s) NUMA :                          1
Identifiant constructeur :              GenuineIntel
Famille de processeur :                 6
Modèle :                                60
Nom de modèle :                         Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz
Révision :                              3
Vitesse du processeur en MHz :          2494.236
BogoMIPS :                              4988.47
Constructeur d'hyperviseur :            KVM
Type de virtualisation :                complet
Cache L1d :                             32 KiB
Cache L1i :                             32 KiB
Cache L2 :                              256 KiB
Cache L3 :                              6 MiB
Nœud NUMA 0 de processeur(s) :          0
Vulnerability Itlb multihit:            KVM: Vulnerable
Vulnerability L1tf:                     Mitigation; PTE Inversion
Vulnerability Mds:                      Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:                 Mitigation; PTI
Vulnerability Spec store bypass:        Vulnerable
Vulnerability Spectre v1:               Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:               Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Tsx async abort:          Not affected
Drapaux :                               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm invpcid_single pti fsgsbase avx2 invpcid md_clear flush_l1d

Pour voir l'historique des commandes passées on peut utiliser cat .bash_history depuis le répertoire de l'utilisateur (/home/user). Plus simplement on peut utiliser la commande history qui donne le même résultat.

user@machine: cat .bash_history    <- affiche le contenu du fichier caché .bash_history
ftp 127.0.0.1
ifconfig
sudo apt-get install proftpd gadmin-proftpd
ftp 10.0.2.15

D’autres commandes ls* sont disponibles : lsmem (pour lister les informations sur la mémoire) et lsusb (pour lister les périphériques connectés par usb).

Les fichiers

Les principaux dossiers de LINUX

A côté de la hiérarchie utilisateur (/home), LINUX est constitué du plusieurs répertoires importants sous lesquels existe toute une hiérarchie.

RépertoireSignification Contenu
FrançaisAnglais
/Racine du système hiérarchie primaire
/binbinaires, utilitaires binairesbinaries, binary utilities (binutils)Exécutables des commandes essentielles disponibles pour tous les utilisateurs (ex: cd, cat, ls…)
/bootinitialisationbootstrapFichiers statiques du chargeur d’amorçage (noyaux, images ramdisk, fichiers de configuration du chargeur d'amorçage…)
/devpériphériquedeviceFichiers spéciaux des périphériques
/etcconfiguration éditable en mode texteediting text configFichiers de configuration au format textuel de plusieurs programmes et services du système
/homemaisonhome directoryRépertoires personnels des utilisateurs
/libbibliothèqueslibrairiesBibliothèques partagées essentielles et modules du noyau
/media Contient les points de montages pour les médias amovibles
/mntmontagemountPoint de montage pour monter temporairement un système de fichiers
/optoptionneloptionalEmplacement pour des applications installées hors gestionnaire de paquets (logiciels optionnels)
/procprocessusprocessesRépertoire virtuel pour les informations système (états du noyau et des processus système)
/rootracinerootRépertoire personnel du super-utilisateur
/runexécution systèmeruntime systemInformations relatives au système depuis son dernier démarrage (ex : utilisateurs actifs, services en cours d'exécution, etc.)
/sbinbinaires systèmesuper binaries, super binary utilities (super binutils)Exécutables système essentiels
/srvservicesservicesDonnées pour les services du système
/tmptemporairetemporaryFichiers temporaires des applications
/usrressources système LinuxLinux system resourcesHiérarchie secondaire, pour des données en lecture seule par les utilisateurs. Ce répertoire contient la vaste majorité des applications usuelles des utilisateurs et leurs fichiers
/usr/bin Exécutables des programmes additionnels disponibles pour tous les utilisateurs (ex : le gestionnaire de fichiers, le lecteur de musique, le navigateur Web…)
/usr/lib Bibliothèques partagées par les applications additionnelles de /usr/bin et /usr/sbin
/usr/local Hiérarchie tertiaire. Emplacement où les utilisateurs doivent installer les applications qu'ils compilent.
/usr/share Fichiers non reliés à l'architecture partagés par les applications de /usr/bin et /usr/sbin (ex : les icônes, les thèmes, la documentation…)
/varvariablevariableDonnées variables et diverses. On y trouve deux sous-répertoires importants : www qui sert de racine au serveur web apache et log qui contient tous les logs du système

Les fichiers et les permissions

A chaque fichier est associé un ensemble d'attributs fournissant des informations sur sa taille, sa date de création mais spécifiant également qui est autorisé à utiliser ce fichier et de quelle manière. Un fichier possède un propriétaire qui est en général le créateur du fichier. Il possède également un groupe propriétaire qui est le groupe du créateur lors de la création.

Parmi les attributs on trouve donc des informations sur l'objet, et une liste d'accès se rapportant à l'utilisateur, son groupe , et les autres groupes.

Vous pouvez changer les protections des fichiers dont vous êtes propriétaires par la commande chmod.

Ces permissions peuvent être visualisées par la commande ls -l

Vous avez différents champs:

drwxr-xr-x 1 dupont cicrp 512 Dec 31 1989 rep1
-rwxr-xr-x 1 dupont cicrp 423 Oct 27 1989 toto

Le d indique un répertoire (directory) , le - indique un fichier Le r indique read pour lecture Le w indique write pour écriture Le x indique execute pour exécution Le - indique l'absence du droit read, write ou execute

Hormis le premier caractère (d ou -) , les permissions sont présentées sous forme de trois groupes rwx , avec à chaque fois la présence ou l'absence du droit correspondant.

Le premier groupe de rwx indique les permissions que possède le propriétaire sur son fichier : droits du u(ser)

Le deuxième groupe indique les permissions pour les utilisateurs membres du groupe propriétaire du fichier: droit du g(roup)

Le troisième groupe indique les permissions pour les autres utilisateurs: droit des o(ther)

Modification des attributs des fichiers

Les permissions de base, la commande chmod

Les droits d'accès ou permissions positionnés sur des fichiers peuvent être visualisées par la commande ls -l. Ces droits peuvent être changés au moyen de la commande chmod

La syntaxe est : chmod mode fichier

mode est constitué de trois entités :

  • à qui (le propriétaire, le groupe propriétaire, les autres)
  • l'opérateur (ajout, retrait, affectation)
  • les permissions (lecture, écriture, exécution)

à qui

  • u ← utilisateur
  • g ← groupe
  • o ← autres groupes
  • a ← tous (u+g+o)

opérateur

  • - ← Retire une permission de celles existantes
  • + ← Ajoute une permission à celles existantes
  • = ← Assigne une permission particulière

Permissions

  • r ← Lecture
  • w ← Ecriture
  • x ← Exécution

exemples

Le premier exemple enlève la permission écriture pour les autres (pour other)
chmod o-w fichier

Le deuxième exemple rend le fichier exécutable
chmod +x fichier ← Si “u” “g” “o” non précisé alors en fonction des LINUX le changement est soit pour “u” soit pour “a

user@machine: ls -ail
total 80
89131 drwx------   3 dupont    cicrp     512 Dec 11 16:43 .
17422 drwxr-x---  10 dupont    staff    
1536 Dec 11 16:38 ..
90134 drwx------   3 dupont    cicrp     512 Dec 11 16:42 info.nouveau
89132 -rw-------   1 dupont    cicrp   54199 Dec 11 16:39 terminfo.doc
89133 -rwx------   1 dupont    cicrp     130 Dec 11 16:39 essai
89134 -rw-r-xr--   1 dupont    cicrp      64 Dec 11 16:39 essai1.p
89135 -rwx------   1 dupont    cicrp     425 Dec 11 16:39 tyty
user@machine: chmod u+x terminfo.doc	<- ajout eXécution à User pour terminfo.doc
user@machine: ls -ail
total 80
89131 drwx------   3 dupont    cicrp     512 Dec 11 16:43 .
17422 drwxr-x---  10 dupont    staff    1536 Dec 11 16:38 ..
90134 drwx------   3 dupont    cicrp     512 Dec 11 16:42 info.nouveau
89132 -rwx------   1 dupont    cicrp   
54199 Dec 11 16:39 terminfo.doc
89133 -rwx------   1 dupont    cicrp     130 Dec 11 16:39 essai
89134 -rw-r-xr--   1 dupont    cicrp      
64 Dec 11 16:39 essai1.p
89135 -rwx------   1 dupont    cicrp     425 Dec 11 16:39 tyty
user@machine: chmod	<- erreur de syntaxe
Usage: chmod [-R] [-f] {u|g|o|a ...} {+|-|=} {r|w|x|s|t ...} File ...
       chmod [-R] [-f] OctalNumber File ...
      Changes the permission codes for files or directories.
user@machine: chmod g+rwx essai
user@machine: ls -ail
total 80
89131 drwx------   3 dupont    cicrp    512 Dec 11 16:43 .
17422 drwxr-x---  10 dupont    staff   1536 Dec 11 16:38 ..
90134 drwx------   3 dupont    cicrp    512 Dec 11 16:42 info.nouveau
89132 -rwx------   1 dupont    cicrp  
54199 Dec 11 16:39 terminfo.doc
89133 -rwxrwx---   1 dupont    cicrp    130 Dec 11 16:39 essai
89134 -rw-r-xr--   1 dupont    cicrp     64 Dec 11 16:39 essai1.p
89135 -rwx------   1 dupont    cicrp    425 Dec 11 16:39 tyty

Il existe une deuxième syntaxe possible pour la commande chmod. Dans cette deuxième syntaxe le mode (droits d'accès) est spécifié directement par un nombre octal de trois chiffres.

par exemple 740 :

  • Le 1er chiffre (7) donne les accès pour User
  • Le 2eme chiffre (4) donne les accès pour Group
  • Le 3eme chiffre (0) donne les accès pour Other

Chaque chiffre octal représente une valeur binaire sur trois bits.

  • Le 1er bit indique le droit pour Read (1 lecture autorisée, 0 non autorisée)
  • Le 2e bit indique le droit pour Write (1 écriture autorisée, 0 non autorisée)
  • Le 3e bit indique le droit pour eXecute (1 exécution autorisée, 0 non autorisée)

Ce qui donne:

octal	r w x	droits
7	1 1 1	rwx
6	1 1 0	rw-
5	1 0 1	r-x
4	1 0 0	r--
3	0 1 1	-wx
2	0 1 0	-w-
1	0 0 1	--x
0	0 0 0	---

La commande

user@machine: chmod 740 essai

donne les accès suivants sur le fichier essai :

  • 7 –> rwx pour User
  • 4 –> r– pour Group
  • 0 –> — pour Other

le groupe propriétaire, la commande chgrp

Cette commande permet de changer le groupe propriétaire (change group) du fichier. La syntaxe est la suivante:

chgrp newgroup fichier

user@machine: chgrp staff essai	<- remplace le groupe propriétaire du fichier essai par le groupe staff
user@machine: ls -ail
total 80
89131 drwx------   3 dupont    cicrp    512 Dec 11 16:43 .
17422 drwxr-x---  10 dupont    staff   1536 Dec 11 16:38 ..
90134 drwx------   3 dupont    cicrp    512 Dec 11 16:42 info.nouveau
89132 -rwx------   1 dupont    cicrp  54199 Dec 11 16:39 terminfo.doc
89133 -rwxrwx---   1 dupont    staff    130 Dec 11 16:39 essai
89134 -rw-r-xr--   1 dupont    cicrp     64 Dec 11 16:39 essai1.p
89135 -rwx------   1 dupont    cicrp    425 Dec 11 16:39 tyty

Dans cet exemple “cicrp” était le groupe propriétaire et les utilisateurs de ce groupe avaient alors les droits rwx sur le fichier “essai”. La commande de changement de groupe propriétaire provoque pour les utilisateurs du groupe “cicrp” leur passage dans le champs other. Ils ne possèdent maintenant plus aucun droit sur le fichier “essai” !

le propriétaire, la commande chown

Cette commande permet de changer le propriétaire (change owner) du fichier. La syntaxe est la suivante:

chown newowner fichier

user@machine: chown durand essai
user@machine: ls -ail
total 80
89131 drwx------   3 dupont   cicrp      512 Dec 11 16:43 .
17422 drwxr-x---  10 dupont   staff     1536 Dec 11 16:38 ..
90134 drwx------   3 dupont   cicrp      512 Dec 11 16:42 info.nouveau
89132 -rwx------   1 dupont   cicrp    54199 Dec 11 16:39 terminfo.doc
89133 -rwxrwx---   1 durand   staff      130 Dec 11 16:39 essai
89134 -rw-r-xr--   1 dupont   cicrp       64 Dec 11 16:39 essai1.p
89135 -rwx------   1 dupont   cicrp      425 Dec 11 16:39 tyty

“dupont” n'est plus le propriétaire, il ne peut plus modifier le fichier “essai” avec les droits dédiés au user mais soit avec ceux du group s'il appartient au groupe “staff” soit avec les droits other s'il n'appartient pas à ce groupe.

Les permissions par défaut, la commande umask

Il est possible de préciser un masque de permissions (pour les accès rwx) utilisé lors de la création de tout nouveau fichier. On peut ainsi protéger ses fichiers de manière automatique dès leur création, sans avoir besoin d'utiliser la commande chmod pour avoir de “bonnes permissions” à posteriori.

Le masque est constitué par un nombre de trois chiffres octaux (par exemple 027), où chaque chiffre octal représente le MASQUAGE BINAIRE sur trois bits. Dans le cas de 027 cela correspond à 000 010 111 . Chaque valeur 0 laisse passer la permission (donne le droit), le 1 ne laisse pas passer (filtre le droit)

  • Le 1er groupe de trois bits masque les droits pour (u)ser
  • Le 2e groupe masque l'accès pour (g)roup
  • Le 3e groupe masque l'accès pour (o)ther

ATTENTION ! Le masque à définir est l'inverse des droits à donner ⇒ c'est donc l'inverse de ce qui est fourni pour la commande chmod.

octal	r w x	donne accès en
7	1 1 1	---
6	1 1 0	--x
5	1 0 1	-w-
4	1 0 0	-wx
3	0 1 1	r--
2	0 1 0	r-x
1	0 0 1	rw-
0	0 0 0	rwx

La commande umask positionne les trois masques (user group other)

user@machine: umask 027 <- rwx pour user, r-x pour group, rien pour other
user@machine: umask
027
user@machine: xlp -o essai1 essai1.pas <- création d'un fichier
user@machine: ls -ail essai1*
89305 -rwxr-x---   1 dupont   cicrp     5038 Dec 15 15:49 essai1
89294 -rw-r-xr--   1 dupont   cicrp       64 Dec 15 15:42 essai1.pas
user@machine: umask 002
user@machine: umask
002
user@machine: xlp -o essai2 essai1.pas
user@machine: ls -ail essai*
89305 -rwxr-x---   1 dupont   cicrp      5038 Dec 15 15:49 essai1
89294 -rw-r-xr--   1 dupont   cicrp       64 Dec 15 15:42 essai1.pas
89307 -rwxrwxr-x   1 dupont   cicrp     5038 Dec 15 15:50 essai2

les masques usuels sont:

  • 077 ← Seul l'utilisateur a tous les droits lors de la création d'un nouveau fichier
  • 027 ← L'utilisateur a tous les droits, le groupe a Read et eXecute
  • 022 ← L'utilisateur a tous les droits, le groupe et les autres (other) ont Read, eXecute

Les permissions sur un répertoire

Les mêmes permissions sont affectées aux répertoires. Les mêmes commandes sont utilisées. Cependant le sens à donner aux droits r w x sur un répertoire est différent.

  • {r)ead ← droit de lire le contenu du répertoire (commande ls)
  • (w)rite ← droit d'écrire un nouveau fichier dans un répertoire (commande cp)
  • e(x)ecute ← droit de traverser un répertoire (commande cd)

Pour accéder à un fichier non seulement vous devez avoir le droit de lecture sur ce fichier, mais également le droit d'exécution sur tous les répertoires qui permettent d'atteindre ce fichier.

Sudo

sudo permet d’exécuter une commande avec les droits du super-administrateur appelé root.
Ce mécanisme est à la fois souple et DANGEREUX !

Quelques commandes élémentaires

Manipulation des fichiers et des répertoires

cat
Permet d'afficher à l'écran le contenu du fichier spécifié ou de concaténer des fichiers.
cat essai.f ← Affiche le contenu du fichier “essai.f”.

cp
Permet de copier un ou plusieurs fichiers soit sur un autre fichier soit sur un autre répertoire. Si le fichier de destination existe le contenu initial sera perdu. L'option -r permet de copier (récursivement) des répertoires.
cp essai.f essai.f.save ← Copie “essai.f” dans “essai.f.save”.

mv
Déplace ou renomme un fichier ou un répertoire.
mv a.out prog ← Change le nom du fichier (ou répertoire) “a.out” en “prog”.

rm
Détruit un ou plusieurs fichiers, ou des répertoires avec l'option -r(récursisf), attention, très dangereux s'il existe des liens symboliques.
rm essai.f.save ← Destruction du fichier “essai.f.save”.

ls
Affiche le contenu d'un répertoire donné (répertoire courant par défaut) en fournissant des informations sur les fichiers.
ls -ail

  • option a ← tous les fichiers, même ceux cachés
  • option i ← affiche les numéros d'i-node
  • option l ← version longue : modes, propriétaire, etc..

mkdir
Crée un répertoire.
mkdir $HOME/rep1 ← Création de “rep1” dans le répertoire principal.

rmdir
Détruit un répertoire, celui ci doit être vide.
rmdir $HOME/rep1

cd
Change le répertoire courant. Si aucun répertoire n'est précisé, ce sera par défaut la valeur de la variable $HOME. Sinon ce sera le répertoire spécifié qui deviendra le répertoire courant.
cd .. ← Permet de remonter d'un niveau.

pwd
Affiche le nom du répertoire courant.

more
Visualise un fichier sur l'ecran, page par page (avec l'option -l).
more essai.f ← Affichage page à page
cat essai.f | more ← Idem

chmod
Permet de changer les permissions d'un fichier.
chmod a+r essai.f ← Autorise tout le monde à lire le fichier “essai.f”.

umask
Positionne les droits par défaut.

chown
Permet de changer le propriétaire d'un fichier.
chown dupont essai.f ← “dupont” est le nouveau propriétaire du fichier “essai.f”.

chgrp
Permet de changer le groupe propriétaire d'un fichier.
chgrp cicrp essai.f ← cicrp est le nouveau groupe propriétaire du fichier “essai.f”.

Impression, courrier, outils usuels

lpstat
Fournit l'état des impressions par imprimante. Donc fournit la liste des imprimantes reconnues, ainsi que le numéro du travail d'impression (Job-ID)
lpstat ou lstat -a

lpr
Permet l'impression des fichiers sur imprimante (par ex. sous AIX)
lpr -Pauto fic1 ← Pour imprimer “fic1” sur l'imprimante dont le nom est “auto”.

lprm
Permet d'annuler une impression demandée par la commande lpr
lprm -Pauto 275 ← Pour annuler le Job 275 sur l'imprimante auto (Job-ID)

lp
Permet l'impression des fichiers sur imprimante (par ex sous SYSTEM V)
lp -dauto fic1 ← Pour imprimer “fic1” sur l'imprimante dont le nom est “auto”.

cancel
Permet d'annuler une impression demandée par la commande lp.
cancel auto-275 ← Pour annuler le Job 275 sur l'imprimante “auto” (Job-ID)

pr
Pagine un fichier pour pouvoir l'imprimer.

mail
Commande de lecture de votre boite aux lettres électronique, ou envoi immédiat d'un courrier avec précision du sujet et du texte.
mail ← Lecture boite aux lettres
mail dupont -s cours ← Envoi du texte suivant à “dupont” :
sujet = cours
ceci est le texte à envoyer
. ← “.” fin de texte

elm
Commande de lecture de votre boite aux lettres électronique, en mode pleine page avec aide en ligne. N'est pas présent sur tous les systèmes LINUX.

date
Affiche la date et l'heure .

who
Affiche les utilisateurs connectés en précisant leur moyen de connexion.

w
Affiche les utilisateurs connectés en précisant ce qu'ils font.

passwd
Modification du mot de passe utilisé au login.

Commandes réseau

ssh
Demande de connexion sur une machine distante. Ouverture d'une nouvelle session.

ftp
Outil de transfert de fichier File Tansfert Protocol entre machines possédant ce protocol

Commandes diverses

df
Liste l'état des filesystems

wc
Compte le nombre de lignes de mots et de caractères du fichier donné.
who | wc -l ← Compte le nombre d'utilisateurs connectés

tee
Produit à partir d'un fichier d'entrée, deux fichiers de sortie.

file
Indique le type du fichier.

sort
Trie suivant les critères donnés par les options, les fichiers ou données fournis en entrée.

find
Parcourt la hiérarchie des fichiers, pour chaque chemin d'accès donné, à la recherche des fichiers dont les noms sont précisés en argument dans la commande. Certains critères de recherche peuvent être spécifiés.
find /home/dupont -name *.f -print ← Liste le nom des fichiers “*.f” se trouvant sous “/home/dupont”

grep
Recherche dans le fichier spécifié les lignes contenant une chaîne de caractères identique à celle donnée en argument. Chaque ligne trouvée est affichée sur la sortie standard.
grep “SUBROUTINE” pgm.f ← Donne toutes les lignes de “pgm.f” contenant “SUBROUTINE”.

xargs
Construit, à partir d'une liste, une liste d'arguments.
find /home/dupont -name *.f -print | xargs grep “SUBROUTINE” ← Recherche toutes les occurrences de -“SUBROUTINE” dans les fichiers “*.f” sous “/home/dupont”.

compress
Stocke les fichiers sous une forme compressée.

uncompress
Décompacte un fichier crée par la commande compress.

tar
Archive une liste de fichiers et produit un fichier résultat ou une écriture sur bande magnétique.

banner
Imprime chaque argument en lettres larges sur la sortie standard.

echo
Impose aux arguments d'être affichés.

tail
Affiche la fin d'un fichier.

Commandes pour les processus

ps
Est utilisé pour obtenir des informations sur l'état des processus de l'utilisateur.

kill
Provoque l'arrêt de l'exécution des processus spécifiés.

Exemples

user@machine: ps -l <- donne la liste des process utilisateur avec leur numéro PID process id, et le numéro du processus père PPID
F      S  UID  PID  PPID    C PRI NI  ADDR  SZ  WCHAN   TTY  TIME CMD
240801 S  223 23896 47959   0  60 20  bb0b  128  pts/1  0:00 ksh
200001 R  223 44642 23896  80 100 20 133d3  296  pts/1  0:00 ps
user@machine: ps -udupont <- liste les process liés a "dupont"
user@machine: ps -t pts/35 <- liste les process liés au "terminal" pts/35
user@machine: kill -9 23896 <- tue le process 23896 (qui est le ksh de login => provoque un logout)

L'aide "en ligne"

L'aide standard de linux s'obtient par la commande man.

Vous disposez d'un grand nombre de commandes qui sont sous /bin et /usr/bin.
Pour vous aider à les utiliser le système possède une documentation interne. Cette documentation est située sous /usr/man.

Elle n'est pas lisible directement mais à l'aide de la commande man.
Pour avoir toute l'information sur une commande particulière il suffit de taper man <nom_de_la_commande>.

Pour arrêter l'affichage de l'aide, il suffit de taper la lettre q qui provoque l'arrêt de la page courante de documentation, ou ^C qui arrête tout.

user@machine:man man <- aide pour l'utilisation de la commande man
man Command

Purpose
Displays manual entries online.

Syntax
man [ -k Keyword |  -f Command]  [-] [   -MPath ] [ Section ]
Title

Description
The man command provides information on various reference arti-
cles, such as commands, subroutines and files.The man command can
provide  one  line descriptions of commands that are specified by
name,  or  it  can  provide  information  for all commands  whose
descriptions contain a specified keyword.........
user@machine: man ls <- demande d'aide sur la commande ls
ls Command

Purpose
Displays the contents of a directory.

Syntax
ls [ -A a d i L N R r s] [ - F | - | - x | - m | -  x | - 1 ] 
   [ - cl | -ct | -clt | -ul | -ut | -utl]  [ - n| - l] 
   [ [ - g| - n| - l| - o| - e] - t]   [File ...] [Directory ...]

Description
The ls command writes to standard output ......

Autre possibilité : utiliser l’option –help de la commande concernée (deux fois le tiret avant “help”).

Redirection des entrées/sorties et Tubes (pipes)

Redirection des entrées/sorties

La redirection des entrées/sorties standard est une des caractéristiques du système Linux.\| L'interpréteur shell reçoit ses commandes à partir d'une entrée standard qui est le clavier et affiche les résultats sur la sortie standard qui est l'écran et sort éventuellement les erreurs sur l'écran aussi.

Vous avez la possibilité de modifier l'affectation de ces fichiers standards sous le shell, pendant la durée de l'exécution de la commande.

Par exemple la commande ls vous donne sur écran la liste des fichiers, mais vous pouvez rediriger la sortie dans un fichier. Cette redirection se fait au moyen du signe supérieur >.

ls > monfichier
Vous ne verrez rien à l'écran, le résultat de la commande ls sera écrit dans le fichier “monfichier”, dont vous pourrez visualiser le contenu au moyen de la commande cat.

De même, à l'aide du signe inférieur <, on peut changer l'entrée standard pour que la commande prenne ses données un le fichier d'entrée.

wc < fic
Va afficher le nombre de lignes,de mots,de caractères se trouvant dans le fichier d'entrée “fic”.

Si on utilise la redirection de la sortie standard (>) sur un fichier existant, alors le contenu de ce fichier est écrasé par le résultat de la commande redirigée.\| Si vous voulez ajouter des informations à la suite il faut alors taper deux fois le caractère > :

ls » monfichier

Tubes ou Pipes

Il existe une autre méthode de redirection appelée “pipe” ou “tube”. Elle permet d'affecter la sortie standard d'une commande sur l'entrée standard d'une autre commande.
Le symbole du shell est la barre verticale |.

exemple : ls -l | grep “^d”
Donne la liste des sous répertoires contenus dans le répertoire courant et a le même effet que la suite des deux commandes suivantes:
ls -l > fichier
grep “^d” < fichier

Les “pipes” permettent d'éviter la création de fichiers temporaires.

exemples :
cat | more nomfichier
man cmd | lpr

Création de nouvelles commandes, les "scripts"

Vous pouvez combiner des commandes dans des fichiers, des “scripts shell”, de façon à vous créer vos propres commandes.

exemple :

user@machine: cat > nbuser <- saisie de texte directement dans nbuser
who|wc -l
^D <- fin de fichier
user@machine: cat nbuser <- vérification
who|wc -l
user@machine: nbuser <- exécution mais problème
ksh: nbuser: Permission denied.
user@machine: ls -ail nbuser <- droit à exécution non positionné
18040 -rw-------   1 dupont   cicrp      10 Dec 15 17:46 nbuser
user@machine: chmod +x nbuser <- rend exécutable
user@machine: ls -ail nbuser
18040 -rwx------   1 dupont   cicrp      10 Dec 15 17:46 nbuser
user@machine: nbuser <- exécution
11 

L'option -l de wc spécifie que le nombre de lignes du résultat de la commande who doit être pris en compte.

Vous pouvez aussi combiner les commandes who et wc en ajoutant un message :

user@machine:cat > nbuser
echo 'who | wc -l'  utilisateurs sur le système
^D

autre exemple :

Pour afficher la liste des sous-répertoires du répertoire courant.

user@machine:cat > listd
ls -l $1 | grep '^d '
^D

Pour grep la recherche de la chaîne '^d' revient à rechercher le caractère d en début de ligne. Or la commande ls -l fournit les modes et les types (d pour répertoires, - pour fichiers).

La syntaxe $1 dans un fichier de commande permet de dire qu'à cet endroit on doit mettre l'argument numéro 1 passé sur la ligne de commande. Dans le cas où on exécute : listd /home/dupont alors $1 sera remplacé par /home/dupont lors de l'exécution.

Si aucun argument n'est donné, le répertoire courant sera pris. listd / donnera les répertoires de la racine.

L'exécution de votre fichier listd est soumise au positionnement du droit x sur ce fichier. En effet par défaut lors de la création de fichiers de texte (c'est le cas ici) le droit d'exécution n'est pas mis.

La commande find permet de rechercher les fichiers.

find . -print

Va afficher la liste de tous les fichiers du sous arbre courant.

Vous pouvez entrer la commande dans un fichier “liste” et taper le nom de ce fichier liste à chaque fois, comme si il s'agissait d'une commande. Idem pour les répertoires car find a un argument -type pour rechercher certains types de fichiers, ici d :

find . -type d -print.

Processus (ou tâche)

Hiérarchie de processus

Lorsque vous êtes entré sous LINUX, vous avez lancé un processus, c'est à dire l'exécution d'un programme particulier, le shell de login (interpréteur de commande). Ce processus a un numéro d'identification appelé Process-Id (PID).

Chaque nouvelle commande lancée par la suite crée un nouveau processus. Ce nouveau processus est alors rattaché au processus à partir duquel il a été créé, par défaut le shell de login. Ainsi ce nouveau processus possède un processus père ou Parent Process-Id (PPID). Cette commande peut elle-même lancer une nouvelle commande, son processus devient le père du nouveau processus créé, et ainsi de suite….

L'ensemble des processus de la machine est donc organisé en une hierarchie “de père en fils”. Les processus possèdent tous le même “ancêtre”, le processus numéro 1.

La commande ps -f (f pour full) permet de visualiser la hiérarchie de vos propres processus. La colonne PID est le numéro du processus, la colonne PPID est le numéro du père de ce processus.

user@machine: ps -f  | more
USER	PID	PPID	C	STIME           TTY	TIME	CMD
dupont	14423	76374	1	17:37:54	pts/11	0:00	-ksh
dupont	46089	14423	4	17:38:52	pst/11	0:00	more
dupont	92168	14423	14	17:38:52	pts/11	0:00	ps -f

Ici les deux commandes more et ps possèdent le même père, le process de login (-ksh)

Processus en arrière-plan et avant-plan

Lancement des processus d'arrière-plan

Lorsque vous lancez une commande vous “perdez la main”, c'est à dire que vous devez attendre la fin de cette exécution pour pouvoir taper une autre commande. Le processus généré se déroule alors en avant-plan (ou foreground) et bloque le lancement de tout nouveau processus.

Ceci est normal pour les sytèmes d'exploitation mono-tâche tels que MSDOS, mais LINUX est multi-tâches et permet donc de lancer plusieurs processus simultanément. Cependant un seul se déroulera en avant-plan, les autres devront se dérouler en arrière-plan (ou background) .

Les processus d'arrière-plan se déroulent en parallèle du processus interactif courant. Il sont actifs en même temps mais vous avez toujours “la main” pour taper de nouvelles commandes. Cependant tout affichage d'un processus d'arrière-plan se fera sur l'écran et viendra donc se mélanger avec l'affichage du processus interactif en avant-plan.

Le lancement d'une commande en arrière-plan se fait par la frappe de la commande suivie par le caractère &. Le numéro du processus créé est alors retourné.

user@machine:who& <- lancement de la commande
[1]    39328	<- numéro du process
user@machine:
dupont    pts/1  Mar 31 11:53  (plex_sb.cicrp.ju) <- résultat  who
durand    pts/2  Mar 31 12:01  (plex_sa.cicrp.ju)
p6ip10    pts/3  Mar 31 12:50  (ippc48.cicrp.jus)
p6e2a3    pts/4  Mar 31 12:12  (134.157.15.117)
p7mgeo10  pts/5  Mar 31 13:20  (plex_sb.cicrp.ju)

Contrôle des processus

Une fois la commande lancée en arrière-plan vous pouvez toujours contrôler son déroulement. Les actions possibles et les commandes ou frappes de touches associées sont :

  • Tuer un processus d'avant ou d'arrière plan kill -9 <process-id>
  • Suspendre le processus d'avant plan CTRL-Z
  • Passer en arrière plan le processus suspendu bg (pour background)
  • Passer en avant plan le processus d'arrière plan fg (pour foreground)

ATTENTION, le caractère de suspension (frappe de CTRL et de ×Z simultanément) peut varié. En effet c'est un paramètre de communication du terminal, et en tant que tel il est modifiable grâce à la commande stty. la commande stty -a permet de connaître le caractère de suspension.

Cet exemple montre ce fonctionnement à partir d'un programme fortran qui boucle.

user@machine: cat boucle.f
program boucle
10   write(6,*) 'ca boucle'
goto 10
end
user@machine: stty -a
speed 9600 baud; 0 rows; 0 columns; 
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = ^@
eol2 = ^@; start = ^Q; stop = ^S; susp = ^Z; dsusp <undef>; reprint=^R <- ^Z est bien le caractère de suspension                      
user@machine: boucle <- lancement de la commande en avant plan
ca boucle
ca boucle 	<- messages
ca boucle .....
^Z
[1] + 19385   Stopped    boucle <- frappe CTRL-Z
      |
      +---------------------------- numéro du process
user@machine: bg <- passage en arrière plan
[1]     boucle&
ca boucle <- exécution se poursuit en arrière plan
ca boucle
ca boucle .....
ls <- on peut taper des commandes
ca boucle                                         
| (mélange des deux ...)
a.out     boucle.f  fort.10   rfic      
wfic.f  <--+
ca boucle                                
| (... affichages)
boucle    fort.1    fort.3    rfic.f
ca boucle
ca boucle ....
user@machine: kill -9 19385 <- on peut tuer le process d'arrière plan ou le passer en avant plan avec la commande fg
[1] + 19385     Killed      boucle
initiation_linux.txt · Dernière modification: 2021/09/15 19:02 de regis