- 1.
top
: renseignements, en continu, sur l’utilisation du CPU et de la mémoire - 2.
ps
: (process status) renseignements sur les processus - 3.
kill
: envoi d’un signal à un processus (pas toujours pour le tuer !) - 4.
nice
: permet de modifier la priorité d’exécution d’un processus - 5. Mise en attente et reprise
- 6. Laisser un processus se terminer, même après la fermeture de session
- 7.
tty
: identifie le terminal en cours - 8.
stty
: donne la configuration du terminal - 9. Ouvrir une session en mode console
- 10. Arrêt système
- 11. Clavier : passer de
qwerty
àazerty
- 12. Commandes pour
systemd
D’après l’édition 11 des travaux d’Alain Leaper, 2018-04-10
Mis à jour le 2020-02-19
Licence GPL
1. top
: renseignements, en continu, sur l’utilisation du CPU et de la mémoire
$ top
top - 12:27:27 up 1 day, 23:53, 1 user, load average: 0,53, 0,58, 0,62
Tasks: 234 total, 2 running, 164 sleeping, 2 stopped, 14 zombie
%Cpu(s): 6,7 us, 2,3 sy, 0,2 ni, 90,1 id, 0,0 wa, 0,0 hi, 0,7 si, 0,0 st
KiB Mem : 7843396 total, 2723100 free, 3172712 used, 1947584 buff/cache
KiB Swap: 2097148 total, 1996284 free, 100864 used. 3899980 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
32108 siltaar 20 0 1978064 91532 61028 S 7,3 1,2 0:23.03 vlc
763 root 20 0 560820 158228 116928 S 5,9 2,0 63:13.44 Xorg
[…]
Une version améliorée (graphiques, couleurs) est installable avec le paquet htop
. D’autres commandes nouvelles génération sont listées ici.
2. ps
: (process status) renseignements sur les processus
$ ps
PID TTY TIME CMD
4897 pts/10 00:00:00 zsh
12022 pts/10 00:00:00 ps
Sans option : affiche uniquement les processus lancés à partir du terminal courant.
Options : c’est une commande qui réagit différemment avec ou sans le tiret (-option
peut être différent de option
).
En effet les normes POSIX et UNIX
exigent que ps -aux
affiche tous les processus appartenant à l’utilisateur appelé
x
, ainsi que tous les processus qui seraient sélectionnés par l’option -a
.
$ ps a (1)
1 | alors que ps -a permet de sélectionner tous les processus sauf les meneurs de session et les processus non associés à un terminal. |
Tous les terminaux, xterm
ou consoles, sont concernés (pas seulement le terminal courant).
PID TTY STAT TIME COMMAND
763 tty7 Ssl+ 63:50 /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nol
1145 tty1 Ss+ 0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
[…]
19464 pts/6 Ss+ 0:01 -zsh
14660 pts/13 Ss 0:01 -zsh
16298 pts/6 S 39:30 /usr/bin/python /usr/bin/pelican --debug --autoreload -r /home/user
16300 pts/6 S 0:32 python -m pelican.server 8001
32666 pts/13 S+ 0:31 vim -i NONE content/Memos/memo_19.adoc
$ ps x
PID TTY STAT TIME COMMAND
856 ? Ss 0:00 /lib/systemd/systemd --user
857 ? S 0:00 (sd-pam)
866 ? Ss 0:00 /bin/sh /etc/xdg/xfce4/xinitrc -- /etc/X11/xinit/xserverrc
[…]
14660 pts/13 Ss 0:01 -zsh
32666 pts/13 S+ 0:48 vim -i NONE content/Memos/memo_19.adoc
Tous les processus (lancés à partir de terminaux ou non) qui appartiennent au même EUID (effective UID) : l’utilisateur courant.
$ ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:03 /sbin/init
2 ? S 0:00 [kthreadd]
3 ? I< 0:00 [rcu_gp]
5 ? I< 0:00 [kworker/0:0H]
[…]
397 ? Ss 0:03 /lib/systemd/systemd-journald
407 ? Ss 0:00 /sbin/lvmetad -f
417 ? Ss 0:00 /lib/systemd/systemd-udevd
[…]
856 ? Ss 0:00 /lib/systemd/systemd --user
857 ? S 0:00 (sd-pam)
866 ? Ss 0:00 /bin/sh /etc/xdg/xfce4/xinitrc -- /etc/X11/xinit/xserverrc
[…]
14660 pts/13 Ss 0:01 -zsh
32666 pts/13 S+ 0:44 vim -i NONE content/Memos/memo_19.adoc
Tous les processus sont concernés, sans restriction. C’est l’option que j’utilise par réflex.
$ ps axj
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 1 1 1 ? -1 Ss 0 0:03 /sbin/init
0 2 0 0 ? -1 S 0 0:00 [kthreadd]
2 3 0 0 ? -1 I< 0 0:00 [rcu_gp]
2 5 0 0 ? -1 I< 0 0:00 [kworker/0:0H]
[…]
1 397 397 397 ? -1 Ss 0 0:03 /lib/systemd/systemd-journald
1 407 407 407 ? -1 Ss 0 0:00 /sbin/lvmetad -f
1 417 417 417 ? -1 Ss 0 0:00 /lib/systemd/systemd-udevd
[…]
1 856 856 856 ? -1 Ss 1000 0:00 /lib/systemd/systemd --user
856 857 856 856 ? -1 S 1000 0:00 (sd-pam)
851 866 866 866 ? -1 Ss 1000 0:00 /bin/sh /etc/xdg/xfce4/xinitrc -- /etc/
[…]
3032 14660 14660 14660 pts/13 32666 Ss 1000 0:01 -zsh
14660 32666 32666 14660 pts/13 32666 S+ 1000 0:56 vim -i NONE content/Memos/memo_19.adoc
Donne en plus la filiation. Remarquer le PID 1, à l’origine de tous le autres… Son père est le pseudo processus 0.
$ ps l
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
0 1000 14660 3032 20 0 52288 6516 - Ss pts/13 0:01 -zsh
0 1000 32666 14660 20 0 76444 12352 core_s S+ pts/13 1:03 vim -i NONE content/Memos/m
Elle peut être combinée avec les autres options, et apporte des renseignements complémentaires…
2.1. Signification de quelques abréviations
- PID
-
(Process ID) numéro d’identification du processus
- PPID
-
(Parent Process ID) numéro d’identification du processus père
- TTY
-
le terminal à l’origine du processus
- STAT
-
(status) première lettre seulement (
?
si le processus ne vient pas d’un terminal)S
(sleeping) : attend quelque chose, ne fait rien.R
(running) : est actif.T
(stopped) : a reçu un signalSIGSTOP
, ne fait plus rien.Z
(zombie) : est terminé mais en attente de lecture de son code de sortie (par son père ou celui qui en tient lieu).
3. kill
: envoi d’un signal à un processus (pas toujours pour le tuer !)
$ kill -l
Liste tous les signaux possibles pouvant être envoyés à un processus par cette commande. Les sigaux peuvent être identifiés par leur numéro ou par le libellé.
Le processus cible doit au préalable être repéré par son PID (ici 999
), voir la commande ps
.
$ kill 999 (1)
$ kill -15 999 (2)
$ kill -9 999 (3)
1 | Est équivalent à au <2> |
2 | ou $ kill -SIGTERM 999 |
3 | ou $ kill -SIGKILL 999 : souvent employé quand les autres options ont échoué… |
pkill
est un raccourci présent dans le paquet coreutils
permettant de
désigner le processus ciblé directement par son nom. Il est également possible
de désigner plusieurs processus d’un coup, s’il correspondent tous au morceau
de nom fourni.
$ sleep 500 & (1)
[1] 11513
$ sleep 500 &
[2] 11750
$ pkill sleep
[1] - 11513 terminated sleep 500
[2] + 11750 terminated sleep 500
1 | Le & permet de lancer un processus en arrière plan et de récupérer tout
de suite la main dans le terminal. Voir la partie « Mise en attente et reprise
» pour plus d’information. |
Pour finir, la commande pgrep
est elle une combinaison de ps
et de grep
,
pour lister et trouver des processus.
4. nice
: permet de modifier la priorité d’exécution d’un processus
Plus un processus est gentil (nice
) plus il offre de temps d’exécution aux autres processus.
Cette commande est principalement utilisée sur les processus en arrière plan.
$ nice -n 12 monProgramme & (1) (2) (3)
1 | monProgramme : un programme ou une commande (ls …) |
2 | & si on désire lancer en arrière plan (exécution asynchrone) |
3 | 12 (exemple) : un nombre compris entre 1 et 20 |
Observation par ps
avec l’option l
:
-
par défaut
PRI = 20
,NI=0
pour tous les processus ; -
avec
nice -n 12
,PRI = 32
,NI=12
.
C’est à dire une diminution de la priorité (temps de traitement plus long). Seul l’administrateur est autorisé à augmenter la priorité d’un processus, par un nombre négatif.
5. Mise en attente et reprise
$ sleep 500
(1)
[1] + Interrompu sleep 500
1 | Ctrl+Z |
Pour lister les processus mis en pause :
$ jobs
[1] Interrompu sleep 500
Pour reprendre l’exécution du dernier processus interrompu :
$ fg
Pour reprendre l’exécution du dernier processus, mais en arrière plan :
$ bg
[1] sleep 500 &
$ jobs
[1] Tourne sleep 500
Cela permet de continuer à faire d’autres choses dans le terminal en question. Le processus se finira naturellement, ou sera tué à la fermeture du terminal qui l’a lancé.
Notez le &
qui indique que le processus s’exécute en tâche de fond, il est possible de démarrer directement un processus en arrière plan de la même manière suivante :
$ sleep 500 & (1)
[1] 3687
$ sleep 500 & (2)
[2] 3688
$ jobs -l (3)
[1] + 3687 Tourne sleep 500
[2] - 3688 Tourne sleep 500
1 | Lancement d’un processus en tâche de fond |
2 | Lancement d’un deuxième processus en tâche de fond |
3 | Affichage de la liste des porcessus an arrière plan dans ce terminal, avec -l leurs PID . |
En plus du PID
, vous pouvez aussi utiliser directement la numérotation des tâches en arrière plan (le numéro entre crochets), précédé de %
, avec kill
par exemple :
$ kill -STOP %2
[2] + Interrompu (Signal) sleep 500
$ kill -TERM %2
$ jobs -l
[1] + 3687 Tourne sleep 500
[2] 3688 Terminé sleep 500
6. Laisser un processus se terminer, même après la fermeture de session
Un processus en cours d’exécution est interrompu par la fin de l’exécution du processus parent (celui à partir duquel il a été lancé). Ainsi, fermer la console tue tous les processus qui ont été lancés depuis cette console. De même, fermer sa session tue tous les processus que l’utilisateur en question avait lancé.
Pour faire survivre un processus à ces évènements, il faut le lancer à l’aide
de la commande nohup
.
$ nohup sleep 500 &
Vous pouvez alors fermer votre session via la fonction de déconnexion (pour
changer d’utilisateur sur la machine par exemple) le processus continuera son
exécution et ses sorties seront redirigées vers le fichier nohup.out
dans le
dossier courant.
Il est également possible d’utiliser la commande disown
du paquet shellex
pour convertir des processus s’exécutant déjà en tant que tâche de fond, en
processus survivants à la déconnexion :
$ $ sleep 1001 &
[1] 3919
$ disown
La session peut maintenant être fermée…
7. tty
: identifie le terminal en cours
$ tty
/dev/pts/13
À partir d’un autre terminal, cela permet de rediriger la sortie.
Exemple à partir d’un terminal
Pratique pour les opérations de debugging… |
8. stty
: donne la configuration du terminal
$ stty -a
speed 38400 baud; rows 77; columns 96; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany
-imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
-flusho -extproc
Liste les caractéristiques (^
désigne en général la touche Control
), ainsi:
-
intr = ^C
signifie que Ctrl+C émet le signalSIGINT
(signal numéro 2, sur le processus en cours) ; -
eof = ^D
signifie que Ctrl+D émet une fin de fichier (dans une saisie en cours)
9. Ouvrir une session en mode console
C’est parfois pratique pour dépanner…
La combinaison de touches : Ctrl+Alt+F1 (F2…) ; permet d’atteindre une console native depuis un environnement graphique.
En dehors d’un environnement graphique, on peut naviguer entre différentes consoles via : Alt+F1 (F2…).
Au delà des consoles disponible (généralement 6) : Alt+F7 permet de revenir à l’environnement graphique.
9.1. Pour lancer le serveur graphique à partir d’une session en mode console
$ startx
Il peut être intéressant de disposer de la souris en mode console,
installer le paquet gpm (et # reboot pour prise en compte).
|
Pour passer le clavier en azerty : $ sudo loadkeys fr (s’écrit loqdkeys en qwerty). Depuis l’interface graphique et temporairement pour une session : setxkbmap fr (s’écrit setxkb,qp ).
|
Voir également : Set bepo keyboard layout in terminal.
10. Arrêt système
La commande shutdown
permet d’arrêter le système proprement, sans risquer de perte de fichiers dû à un travail en cours.
Elle date des début d’Unix, lorsque plusieurs utilisateurs se connectaient via des terminaux physiques à une même machine centrale. L’arrêt du système concerne alors tous les utilisateurs connectés. La commande shutdown
prévoit donc l’affichage d’un message (que l’on peut ajouté en fin de commande après les autres options) aux utilisateurs connectés pouvant annoncer une date d’arrêt, et donc un arrêt différé (si on ne lui précise pas l’option : -h now
).
10.1. Arrêt système immédiat
# shutdown -h now (1)
1 | -h pour halt d’ailleurs il existe la commande # halt tout court. |
10.2. Redémarrage
# shutdown -r now (1)
1 | -r pour reboot d’ailleurs il existe aussi la commande # reboot . |
11. Clavier : passer de qwerty
à azerty
$ sudo loadkeys fr (1)
1 | Si vous êtes en qwerty il faut taper : sudo loqdkeys fr |
Si l’opération ne concerne qu’une session, graphique, il est possible de saisir la commande suivante sans avoir besoin du mot de passe administrateur :
$ setxkbmap fr (1)
1 | Si vous êtes en qwerty il faut taper : setxkb,qp fr |
12. Commandes pour systemd
$ pstree (1) (2)
1 | donne la filiation des process |
2 | la commande provient du paquet : psmisc |
$ systemctl status user@1000.service (1)
1 | indique l’état du service associé à la session de l’utilisateur d’identifiant 1000 (le premier utilisateur normal d’un système). |