Table des matières
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 fichier | Commande pour répertoire | ||||
Afficher le contenu | cat (ou more) | ls | |||
Copier | cp | cp -r | |||
Changer de nom | mv | mv | |||
Se déplacer dans | cd | ||||
Supprimer | rm | rmdir ou rm -r | |||
Créer | mkdir | ||||
Nom rép. courant | pwd | ||||
Déplacer | mv | mv |
La syntaxe générale d'une commande sous LINUX est la suivante : cmd -options arg1 arg2 arg…
où
- 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épertoire | Signification | Contenu | |||||
Français | Anglais | ||||||
/ | Racine du système | hiérarchie primaire | |||||
/bin | binaires, utilitaires binaires | binaries, binary utilities (binutils) | Exécutables des commandes essentielles disponibles pour tous les utilisateurs (ex: cd, cat, ls…) | ||||
/boot | initialisation | bootstrap | Fichiers statiques du chargeur d’amorçage (noyaux, images ramdisk, fichiers de configuration du chargeur d'amorçage…) | ||||
/dev | périphérique | device | Fichiers spéciaux des périphériques | ||||
/etc | configuration éditable en mode texte | editing text config | Fichiers de configuration au format textuel de plusieurs programmes et services du système | ||||
/home | maison | home directory | Répertoires personnels des utilisateurs | ||||
/lib | bibliothèques | librairies | Bibliothèques partagées essentielles et modules du noyau | ||||
/media | Contient les points de montages pour les médias amovibles | ||||||
/mnt | montage | mount | Point de montage pour monter temporairement un système de fichiers | ||||
/opt | optionnel | optional | Emplacement pour des applications installées hors gestionnaire de paquets (logiciels optionnels) | ||||
/proc | processus | processes | Répertoire virtuel pour les informations système (états du noyau et des processus système) | ||||
/root | racine | root | Répertoire personnel du super-utilisateur | ||||
/run | exécution système | runtime system | Informations relatives au système depuis son dernier démarrage (ex : utilisateurs actifs, services en cours d'exécution, etc.) | ||||
/sbin | binaires système | super binaries, super binary utilities (super binutils) | Exécutables système essentiels | ||||
/srv | services | services | Données pour les services du système | ||||
/tmp | temporaire | temporary | Fichiers temporaires des applications | ||||
/usr | ressources système Linux | Linux system resources | Hié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…) | ||||||
/var | variable | variable | Donné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