Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
elearning:workbooks:redhat:rh124:l109 [2024/09/26 11:51] – removed admin | elearning:workbooks:redhat:rh124:l109 [2024/09/27 13:05] (Version actuelle) – admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ~~PDF: | ||
+ | Version : **2024.01** | ||
+ | |||
+ | Dernière mise-à-jour : ~~LASTMOD~~ | ||
+ | |||
+ | ======RH12410 - Gestion des Processus====== | ||
+ | |||
+ | =====Contenu du Module===== | ||
+ | |||
+ | * **RH12410 - Gestion des Processus** | ||
+ | * Contenu du Module | ||
+ | * Présentation | ||
+ | * Les Types de Processus | ||
+ | * LAB #1 - Les Commandes relatives aux Processus | ||
+ | * 1.1 - La Commande ps | ||
+ | * 1.2 - La Commande pgrep | ||
+ | * 1.3 - La Commande pstree | ||
+ | * 1.4 - La Commande top | ||
+ | * 1.5 - Les Commandes fg, bg et jobs | ||
+ | * 1.6 - La Commande wait | ||
+ | * 1.7 - La Commande nice | ||
+ | * 1.8 - La Commande renice | ||
+ | * 1.9 - La Commande nohup | ||
+ | * 1.10 - La Commande kill | ||
+ | * 1.11 - La Commande pkill | ||
+ | |||
+ | =====Présentation===== | ||
+ | |||
+ | Un processus est un fichier binaire ( binary file ) qui est chargé en mémoire centrale. Une fois chargé la mémoire exécute le programme en langage machine. Quand le programme est chargé, il a besoin du système d’exploitation qui lui fournit des informations pour qu’il puisse s’exécuter correctement. Ces informations sont appelées des **données d’identification**. | ||
+ | |||
+ | L’ensemble des **données d’identification** est appelé l’**environnement de processus** : | ||
+ | |||
+ | * Un numéro de processus unique (PID), | ||
+ | * Un numéro de processus parent (PPID), | ||
+ | * Un numéro d' | ||
+ | * Un numéro de groupe (GID), | ||
+ | * La durée de traitement, | ||
+ | * La priorité du processus, | ||
+ | * Le répertoire de travail actif, | ||
+ | * Les fichiers ouverts. | ||
+ | |||
+ | Ces informations sont stockés dans le répertoire **/proc**. Le répertoire /proc contient des fichiers et des répertoires virtuels. Le contenu de ces fichiers est créé dynamiquement lors de la consultation. Seul root peut consulter la totalité des informations dans le répertoire / | ||
+ | |||
+ | Saisissez la commande suivante : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# cd /proc; ls -d [0-9]* | ||
+ | 1 10446 10597 17 22 | ||
+ | 10 | ||
+ | 10062 10591 13 | ||
+ | 10066 10592 14 | ||
+ | 10223 10595 15 | ||
+ | 10383 10596 16 | ||
+ | </ | ||
+ | |||
+ | Chaque répertoire fait référence à un PID d'un processus. Les données de l’**environnement de processus** y sont présentes, par exemple : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 proc]# cd 1 ; ls -l | ||
+ | total 0 | ||
+ | -r--r--r--. | ||
+ | dr-xr-xr-x. | ||
+ | -rw-r--r--. | ||
+ | -r--------. | ||
+ | -r--r--r--. | ||
+ | --w-------. | ||
+ | -r--r--r--. | ||
+ | -rw-r--r--. | ||
+ | -rw-r--r--. | ||
+ | -r--r--r--. | ||
+ | -r--r--r--. | ||
+ | lrwxrwxrwx. | ||
+ | -r--------. | ||
+ | lrwxrwxrwx. | ||
+ | dr-x------. | ||
+ | dr-xr-xr-x. | ||
+ | -rw-r--r--. | ||
+ | -r--------. | ||
+ | -r--------. | ||
+ | -r--r--r--. | ||
+ | -rw-r--r--. | ||
+ | dr-x------. | ||
+ | -r--r--r--. | ||
+ | -rw-------. | ||
+ | -r--r--r--. | ||
+ | -r--r--r--. | ||
+ | -r--------. | ||
+ | dr-xr-xr-x. 53 root root 0 Sep 25 12:44 net | ||
+ | dr-x--x--x. | ||
+ | -r--r--r--. | ||
+ | -rw-r--r--. | ||
+ | -r--r--r--. | ||
+ | -rw-r--r--. | ||
+ | -r--------. | ||
+ | -r--------. | ||
+ | -r--------. | ||
+ | -rw-r--r--. | ||
+ | lrwxrwxrwx. | ||
+ | -rw-r--r--. | ||
+ | -r--r--r--. | ||
+ | -r--r--r--. | ||
+ | -rw-r--r--. | ||
+ | -r--r--r--. | ||
+ | -r--r--r--. | ||
+ | -r--------. | ||
+ | -r--r--r--. | ||
+ | -r--r--r--. | ||
+ | -r--r--r--. | ||
+ | -r--------. | ||
+ | dr-xr-xr-x. | ||
+ | -rw-r--r--. | ||
+ | -r--r--r--. | ||
+ | -rw-rw-rw-. | ||
+ | -rw-r--r--. | ||
+ | -r--r--r--. | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** - Vous n'avez pas besoin de consulter le contenu des fichiers et des répertoires. Il convient tout simplement de savoir que ces données existent. | ||
+ | </ | ||
+ | |||
+ | =====Les Types de Processus===== | ||
+ | |||
+ | Il existe trois types de processus : | ||
+ | |||
+ | * **interactif** qui est lancé par le shell dans une console en premier plan ou en tâche de fond | ||
+ | * **batch** qui est lancé par le système au moment propice | ||
+ | * **daemon** qui est lancé au démarrage par le système ( lpd, dns etc ) | ||
+ | |||
+ | Un processus peut être dans un de neuf états ou //process states// : | ||
+ | |||
+ | * //user mode// - le processus s' | ||
+ | * //kernel mode//- le processus s' | ||
+ | * //new// - le processus est nouveau, | ||
+ | * //waiting// – le processus est en attente pour une ressource autre que le processeur, | ||
+ | * // | ||
+ | * //swap// - le processus est endormi dans la mémoire virtuelle, | ||
+ | * // | ||
+ | * //elected// – le processus a le contrôle du processeur, | ||
+ | * //zombie// – le processus a terminé son exécution et est prêt à mourir. | ||
+ | |||
+ | =====LAB #1 - Les Commandes relatives aux Processus===== | ||
+ | |||
+ | ====1.1 - La Commande ps==== | ||
+ | |||
+ | Cette commande affiche les processus de l’utilisateur attaché au terminal : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 1]# cd ~ | ||
+ | |||
+ | [root@redhat9 ~]# ps | ||
+ | PID TTY TIME CMD | ||
+ | 10062 pts/0 00:00:00 su | ||
+ | 10066 pts/0 00:00:00 bash | ||
+ | 10602 pts/0 00:00:00 ps | ||
+ | </ | ||
+ | |||
+ | Pour plus de détails, il convient d' | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# ps -l | ||
+ | F S | ||
+ | 4 S | ||
+ | 4 S | ||
+ | 4 R | ||
+ | </ | ||
+ | |||
+ | On note dans cette sortie : | ||
+ | |||
+ | ^ F | Drapeaux du processus. La valeur 4 indique que le processus utilise les privilèges de root | | ||
+ | ^ S | État du processus S (sleeping), R (In run queue), Z (zombie), N (low priority), D (uninterruptible sleep), T (Traced) | | ||
+ | ^ UID | Numéro de l’Utilisateur | | ||
+ | ^ PID | Numéro Unique de Processus | | ||
+ | ^ PPID | PID du processus parent | | ||
+ | ^ C | Facteur de priorité du processus | | ||
+ | ^ PRI | Priorité du processus | | ||
+ | ^ NI | La valeur de nice | | ||
+ | ^ ADDR | Adresse mémoire du processus | | ||
+ | ^ SZ | Utilisation de la mémoire virtuelle | | ||
+ | ^ WCHAN | Nom de la fonction du noyau dans laquelle le processus est endormi | | ||
+ | ^ TTY | Nom du terminal depuis lequel le processus a été lancé | | ||
+ | ^ TIME | Durée d' | ||
+ | ^ CMD | Commande exécutée | | ||
+ | |||
+ | Pour visualiser la table des processus, utilisez la commande ps avec les options l et x - la commande affiche tous les processus avec un affichage long : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# ps lx | more | ||
+ | F | ||
+ | 4 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 5 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | 1 | ||
+ | --More-- | ||
+ | [q] | ||
+ | </ | ||
+ | |||
+ | On note dans cette sortie certaines informations supplémentaires : | ||
+ | |||
+ | ^ VSZ | La même chose que SZ dans l' | ||
+ | ^ RSS | La mémoire utilisée en kilobytes par le processus | | ||
+ | ^ STAT | La même chose que S dans l' | ||
+ | |||
+ | |||
+ | Avec des options a,u et x la commande affiche le résultat suivant : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# ps aux | more | ||
+ | USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND | ||
+ | root | ||
+ | root | ||
+ | root | ||
+ | root | ||
+ | root | ||
+ | root | ||
+ | root | ||
+ | root 10 0.0 0.0 0 0 ? I< | ||
+ | root 12 0.0 0.0 0 0 ? I Sep25 0:00 [rcu_tasks_kthre] | ||
+ | root 13 0.0 0.0 0 0 ? I Sep25 0:00 [rcu_tasks_rude_] | ||
+ | root 14 0.0 0.0 0 0 ? I Sep25 0:00 [rcu_tasks_trace] | ||
+ | root 15 0.0 0.0 0 0 ? S Sep25 0:00 [ksoftirqd/ | ||
+ | root 16 0.0 0.0 0 0 ? I Sep25 0:01 [rcu_preempt] | ||
+ | root 17 0.0 0.0 0 0 ? S Sep25 0:00 [migration/ | ||
+ | root 18 0.0 0.0 0 0 ? S Sep25 0:00 [idle_inject/ | ||
+ | root 20 0.0 0.0 0 0 ? S Sep25 0:00 [cpuhp/0] | ||
+ | root 21 0.0 0.0 0 0 ? S Sep25 0:00 [cpuhp/1] | ||
+ | root 22 0.0 0.0 0 0 ? S Sep25 0:00 [idle_inject/ | ||
+ | root 23 0.0 0.0 0 0 ? S Sep25 0:00 [migration/ | ||
+ | root 24 0.0 0.0 0 0 ? S Sep25 0:00 [ksoftirqd/ | ||
+ | root 27 0.0 0.0 0 0 ? S Sep25 0:00 [cpuhp/2] | ||
+ | root 28 0.0 0.0 0 0 ? S Sep25 0:00 [idle_inject/ | ||
+ | root 29 0.0 0.0 0 0 ? S Sep25 0:00 [migration/ | ||
+ | root 30 0.0 0.0 0 0 ? S Sep25 0:00 [ksoftirqd/ | ||
+ | root 32 0.0 0.0 0 0 ? I< | ||
+ | root 33 0.0 0.0 0 0 ? S Sep25 0:00 [cpuhp/3] | ||
+ | root 34 0.0 0.0 0 0 ? S Sep25 0:00 [idle_inject/ | ||
+ | root 35 0.0 0.0 0 0 ? S Sep25 0:00 [migration/ | ||
+ | root 36 0.0 0.0 0 0 ? S Sep25 0:00 [ksoftirqd/ | ||
+ | root 38 0.0 0.0 0 0 ? I< | ||
+ | root 42 0.0 0.0 0 0 ? S Sep25 0:00 [kdevtmpfs] | ||
+ | root 43 0.0 0.0 0 0 ? I< | ||
+ | root 44 0.0 0.0 0 0 ? S Sep25 0:00 [kauditd] | ||
+ | root 45 0.0 0.0 0 0 ? S Sep25 0:00 [khungtaskd] | ||
+ | root 46 0.0 0.0 0 0 ? S Sep25 0:00 [oom_reaper] | ||
+ | root 47 0.0 0.0 0 0 ? I< | ||
+ | root 48 0.0 0.0 0 0 ? S Sep25 0:02 [kcompactd0] | ||
+ | root 49 0.0 0.0 0 0 ? SN | ||
+ | root 50 0.0 0.0 0 0 ? SN | ||
+ | root 51 0.0 0.0 0 0 ? I< | ||
+ | root 52 0.0 0.0 0 0 ? I< | ||
+ | root 53 0.0 0.0 0 0 ? I< | ||
+ | root 54 0.0 0.0 0 0 ? I< | ||
+ | root 55 0.0 0.0 0 0 ? I< | ||
+ | root 56 0.0 0.0 0 0 ? I< | ||
+ | root 57 0.0 0.0 0 0 ? I< | ||
+ | root 58 0.0 0.0 0 0 ? I< | ||
+ | root 59 0.0 0.0 0 0 ? S Sep25 0:00 [watchdogd] | ||
+ | root 61 0.0 0.0 0 0 ? I< | ||
+ | root 62 0.0 0.0 0 0 ? S Sep25 0:00 [kswapd0] | ||
+ | root 69 0.0 0.0 0 0 ? I< | ||
+ | root 76 0.0 0.0 0 0 ? I< | ||
+ | root 77 0.0 0.0 0 0 ? I< | ||
+ | root 78 0.0 0.0 0 0 ? I< | ||
+ | --More-- | ||
+ | [q] | ||
+ | </ | ||
+ | |||
+ | On note dans cette sortie certaines informations supplémentaires : | ||
+ | |||
+ | ^ USER | L' | ||
+ | ^ %CPU | Ressources du microprocesseur utilisées par le processus | | ||
+ | ^ %MEM | Ressources en mémoire vive utilisées par le processus | | ||
+ | |||
+ | Les options de cette commande sont : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# ps --help all | ||
+ | |||
+ | Usage: | ||
+ | ps [options] | ||
+ | |||
+ | Basic options: | ||
+ | -A, -e all processes | ||
+ | | ||
+ | a all with tty, including other users | ||
+ | | ||
+ | -N, --deselect | ||
+ | r only running processes | ||
+ | T all processes on this terminal | ||
+ | x | ||
+ | |||
+ | Selection by list: | ||
+ | -C < | ||
+ | -G, --Group < | ||
+ | -g, --group < | ||
+ | -p, p, --pid < | ||
+ | --ppid < | ||
+ | -q, q, --quick-pid <PID> | ||
+ | process id (quick mode) | ||
+ | -s, --sid < | ||
+ | -t, t, --tty < | ||
+ | -u, U, --user < | ||
+ | -U, --User < | ||
+ | |||
+ | The selection options take as their argument either: | ||
+ | a comma-separated list e.g. '-u root, | ||
+ | a blank-separated list e.g. '-p 123 4567' | ||
+ | |||
+ | Output formats: | ||
+ | | ||
+ | | ||
+ | f, --forest | ||
+ | | ||
+ | | ||
+ | j BSD job control format | ||
+ | | ||
+ | l BSD long format | ||
+ | -M, Z add security data (for SELinux) | ||
+ | -O < | ||
+ | O < | ||
+ | -o, o, --format < | ||
+ | user-defined format | ||
+ | s | ||
+ | u | ||
+ | v | ||
+ | X | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | set screen width | ||
+ | | ||
+ | set screen height | ||
+ | |||
+ | Show threads: | ||
+ | H as if they were processes | ||
+ | | ||
+ | -m, m after processes | ||
+ | | ||
+ | |||
+ | Miscellaneous options: | ||
+ | | ||
+ | c show true command name | ||
+ | e show the environment after command | ||
+ | k, --sort | ||
+ | L show format specifiers | ||
+ | n | ||
+ | S, --cumulative | ||
+ | | ||
+ | -V, V, --version | ||
+ | -w, w unlimited output width | ||
+ | |||
+ | --help < | ||
+ | display help and exit | ||
+ | |||
+ | For more details see ps(1). | ||
+ | </ | ||
+ | |||
+ | ====1.2 - La Commande pgrep==== | ||
+ | |||
+ | La commande **pgrep** permet de rechercher un processus en fonction de son nom et d’autres propriétés puis d' | ||
+ | |||
+ | Par exemple, la commande suivante affiche le PID du processus sshd appartenant à root : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# pgrep -u root sshd | ||
+ | 5734 | ||
+ | 9357 | ||
+ | </ | ||
+ | |||
+ | Tandis que la commande suivante affiche tous les PID des processus appartenant à root ou à trainee : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# pgrep -u root, | ||
+ | 1 | ||
+ | 2 | ||
+ | 3 | ||
+ | 4 | ||
+ | 5 | ||
+ | 6 | ||
+ | 8 | ||
+ | 10 | ||
+ | 12 | ||
+ | 13 | ||
+ | 14 | ||
+ | 15 | ||
+ | 16 | ||
+ | 17 | ||
+ | 18 | ||
+ | 20 | ||
+ | 21 | ||
+ | 22 | ||
+ | 23 | ||
+ | 24 | ||
+ | 27 | ||
+ | 28 | ||
+ | 29 | ||
+ | 30 | ||
+ | 32 | ||
+ | 33 | ||
+ | 34 | ||
+ | 35 | ||
+ | 36 | ||
+ | 38 | ||
+ | 42 | ||
+ | 43 | ||
+ | 44 | ||
+ | 45 | ||
+ | 46 | ||
+ | 47 | ||
+ | 48 | ||
+ | 49 | ||
+ | 50 | ||
+ | 51 | ||
+ | 52 | ||
+ | 53 | ||
+ | 54 | ||
+ | 55 | ||
+ | 56 | ||
+ | 57 | ||
+ | 58 | ||
+ | 59 | ||
+ | 61 | ||
+ | 62 | ||
+ | 69 | ||
+ | 76 | ||
+ | 77 | ||
+ | 78 | ||
+ | 79 | ||
+ | --More-- | ||
+ | [q] | ||
+ | </ | ||
+ | |||
+ | Les options de cette commande sont : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# pgrep --help | ||
+ | |||
+ | Usage: | ||
+ | pgrep [options] < | ||
+ | |||
+ | Options: | ||
+ | -d, --delimiter < | ||
+ | -l, --list-name | ||
+ | -a, --list-full | ||
+ | -v, --inverse | ||
+ | -w, --lightweight | ||
+ | -c, --count | ||
+ | -f, --full | ||
+ | -g, --pgroup < | ||
+ | -G, --group < | ||
+ | -i, --ignore-case | ||
+ | -n, --newest | ||
+ | -o, --oldest | ||
+ | -O, --older < | ||
+ | -P, --parent < | ||
+ | -s, --session < | ||
+ | -t, --terminal < | ||
+ | -u, --euid < | ||
+ | -U, --uid < | ||
+ | -x, --exact | ||
+ | -F, --pidfile < | ||
+ | -L, --logpidfile | ||
+ | -r, --runstates < | ||
+ | --ns < | ||
+ | | ||
+ | | ||
+ | the --ns option. | ||
+ | | ||
+ | |||
+ | -h, --help | ||
+ | -V, --version | ||
+ | |||
+ | For more details see pgrep(1). | ||
+ | </ | ||
+ | |||
+ | ====1.3 - La Commande pstree==== | ||
+ | |||
+ | Cette commande affiche les processus en forme d' | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# pstree | ||
+ | systemd─┬─ModemManager───3*[{ModemManager}] | ||
+ | ├─NetworkManager───2*[{NetworkManager}] | ||
+ | ├─accounts-daemon───3*[{accounts-daemon}] | ||
+ | ├─at-spi-bus-laun─┬─dbus-daemon | ||
+ | │ | ||
+ | ├─at-spi2-registr───2*[{at-spi2-registr}] | ||
+ | ├─atd | ||
+ | ├─auditd─┬─sedispatch | ||
+ | │ └─2*[{auditd}] | ||
+ | ├─avahi-daemon───avahi-daemon | ||
+ | ├─colord───3*[{colord}] | ||
+ | ├─crond | ||
+ | ├─cupsd | ||
+ | ├─dbus-broker-lau───dbus-broker | ||
+ | ├─firewalld───{firewalld} | ||
+ | ├─gdm─┬─gdm-session-wor─┬─gdm-wayland-ses─┬─dbus-run-sessio─┬─dbus-daemon | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | ├─2*[gjs───6*[{gjs}]] | ||
+ | ├─gsd-printer───2*[{gsd-printer}] | ||
+ | ├─3*[httpd─┬─httpd] | ||
+ | │ ├─httpd───68*[{httpd}]] | ||
+ | │ └─2*[httpd───52*[{httpd}]]] | ||
+ | ├─ibus-portal───2*[{ibus-portal}] | ||
+ | ├─ibus-x11───2*[{ibus-x11}] | ||
+ | ├─irqbalance───{irqbalance} | ||
+ | ├─lsmd | ||
+ | ├─mcelog | ||
+ | ├─polkitd───7*[{polkitd}] | ||
+ | ├─power-profiles-───2*[{power-profiles-}] | ||
+ | ├─rhsmcertd───{rhsmcertd} | ||
+ | ├─rsyslogd───2*[{rsyslogd}] | ||
+ | ├─rtkit-daemon───2*[{rtkit-daemon}] | ||
+ | ├─sshd───sshd───sshd───bash───su───bash───pstree | ||
+ | ├─switcheroo-cont───2*[{switcheroo-cont}] | ||
+ | ├─systemd─┬─(sd-pam) | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | ├─systemd───(sd-pam) | ||
+ | ├─systemd-journal | ||
+ | ├─systemd-logind | ||
+ | ├─systemd-udevd | ||
+ | ├─udisksd───4*[{udisksd}] | ||
+ | ├─upowerd───2*[{upowerd}] | ||
+ | ├─wpa_supplicant | ||
+ | └─xdg-permission-───2*[{xdg-permission-}] | ||
+ | </ | ||
+ | |||
+ | Les options de cette commande sont : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# pstree --help | ||
+ | pstree: unrecognized option ' | ||
+ | Usage: pstree [-acglpsStTuZ] [ -h | -H PID ] [ -n | -N type ] | ||
+ | [ -A | -G | -U ] [ PID | USER ] | ||
+ | or: pstree -V | ||
+ | |||
+ | Display a tree of processes. | ||
+ | |||
+ | -a, --arguments | ||
+ | -A, --ascii | ||
+ | -c, --compact-not | ||
+ | -C, --color=TYPE | ||
+ | (age) | ||
+ | -g, --show-pgids | ||
+ | -G, --vt100 | ||
+ | -h, --highlight-all highlight current process and its ancestors | ||
+ | -H PID, --highlight-pid=PID | ||
+ | highlight this process and its ancestors | ||
+ | -l, --long | ||
+ | -n, --numeric-sort | ||
+ | -N TYPE, --ns-sort=TYPE | ||
+ | sort output by this namespace type | ||
+ | (cgroup, ipc, mnt, net, pid, time, user, uts) | ||
+ | -p, --show-pids | ||
+ | -s, --show-parents | ||
+ | -S, --ns-changes | ||
+ | -t, --thread-names | ||
+ | -T, --hide-threads | ||
+ | -u, --uid-changes | ||
+ | -U, --unicode | ||
+ | -V, --version | ||
+ | -Z, --security-context | ||
+ | show security attributes | ||
+ | |||
+ | PID start at this PID; default is 1 (init) | ||
+ | USER show only trees rooted at processes of this user | ||
+ | </ | ||
+ | |||
+ | ====1.4 - La Commande top==== | ||
+ | |||
+ | Cette commande indique les processus en mémoire : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# top | ||
+ | |||
+ | top - 14:41:00 up 2 days, 1:56, 1 user, load average: 0.01, 0.01, 0.00 | ||
+ | Tasks: 199 total, | ||
+ | %Cpu(s): | ||
+ | MiB Mem : | ||
+ | MiB Swap: | ||
+ | |||
+ | PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND | ||
+ | 10744 root 20 | ||
+ | 1 root 20 | ||
+ | 2 root 20 | ||
+ | 3 root 0 -20 | ||
+ | 4 root 0 -20 | ||
+ | 5 root 0 -20 | ||
+ | 6 root 0 -20 | ||
+ | 8 root 0 -20 | ||
+ | 10 root 0 -20 | ||
+ | 12 root 20 | ||
+ | 13 root 20 | ||
+ | 14 root 20 | ||
+ | 15 root 20 | ||
+ | 16 root 20 | ||
+ | 17 root rt | ||
+ | 18 root | ||
+ | 20 root 20 | ||
+ | 21 root 20 | ||
+ | 22 root | ||
+ | 23 root rt | ||
+ | 24 root 20 | ||
+ | 27 root 20 | ||
+ | 28 root | ||
+ | 29 root rt | ||
+ | 30 root 20 | ||
+ | 32 root 0 -20 | ||
+ | 33 root 20 | ||
+ | 34 root | ||
+ | 35 root rt | ||
+ | 36 root 20 | ||
+ | 38 root 0 -20 | ||
+ | 42 root 20 | ||
+ | 43 root 0 -20 | ||
+ | 44 root 20 | ||
+ | 45 root 20 | ||
+ | 46 root 20 | ||
+ | 47 root 0 -20 | ||
+ | 48 root 20 | ||
+ | 49 root 25 | ||
+ | 50 root 39 19 | ||
+ | 51 root 0 -20 | ||
+ | 52 root 0 -20 | ||
+ | 53 root 0 -20 | ||
+ | 54 root 0 -20 | ||
+ | 55 root 0 -20 | ||
+ | 56 root 0 -20 | ||
+ | 57 root 0 -20 | ||
+ | 58 root 0 -20 | ||
+ | 59 root | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Pour afficher l'aide de la commande **top**, appuyez sur la touche **h** : | ||
+ | |||
+ | < | ||
+ | Help for Interactive Commands - procps-ng 3.3.17 | ||
+ | Window 1:Def: Cumulative mode Off. System: Delay 3.0 secs; Secure mode Off. | ||
+ | |||
+ | Z, | ||
+ | l, | ||
+ | 0,1,2,3,4 Toggle: ' | ||
+ | f,F,X | ||
+ | |||
+ | L,&,<,> | ||
+ | R,H,J,C . Toggle: ' | ||
+ | c,i,S,j . Toggle: ' | ||
+ | x,y . Toggle highlights: ' | ||
+ | z,b . Toggle: ' | ||
+ | u,U,o,O . Filter by: ' | ||
+ | n,#, | ||
+ | V,v . Toggle: ' | ||
+ | |||
+ | k,r | ||
+ | d or s Set update interval | ||
+ | W,Y,! Write config file ' | ||
+ | q Quit | ||
+ | ( commands shown with ' | ||
+ | Press ' | ||
+ | Type ' | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** - Pour revenir à l' | ||
+ | </ | ||
+ | |||
+ | Au lancement, le temps de rafraîchissement de la liste est de 3 secondes. Pour modifier ce temps à 1 seconde, appuyez sur la touche **s** puis la touche 1 et validez : | ||
+ | |||
+ | < | ||
+ | top - 14:42:15 up 2 days, 1:57, 1 user, load average: 0.00, 0.00, 0.00 | ||
+ | Tasks: 199 total, | ||
+ | %Cpu(s): | ||
+ | MiB Mem : | ||
+ | MiB Swap: | ||
+ | Change delay from 3.0 to 1 | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Pour trier la liste selon l' | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# top | ||
+ | top - 14:43:12 up 2 days, 1:58, 1 user, load average: 0.00, 0.00, 0.00 | ||
+ | Tasks: 199 total, | ||
+ | %Cpu(s): | ||
+ | MiB Mem : | ||
+ | MiB Swap: | ||
+ | |||
+ | PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND | ||
+ | 6049 gdm | ||
+ | 6617 gdm | ||
+ | 6206 gdm | ||
+ | 5707 root 20 | ||
+ | 6444 gdm | ||
+ | 5675 polkitd | ||
+ | 6462 gdm | ||
+ | 6674 gdm | ||
+ | 6486 gdm | ||
+ | 6432 gdm | ||
+ | 6439 gdm | ||
+ | 6451 gdm | ||
+ | 6571 gdm | ||
+ | 853 root 20 | ||
+ | 5975 gdm | ||
+ | 7620 apache | ||
+ | 7431 apache | ||
+ | 6455 gdm | ||
+ | 7898 apache | ||
+ | 1 root 20 | ||
+ | 7621 apache | ||
+ | 7899 apache | ||
+ | 7432 apache | ||
+ | 7622 apache | ||
+ | 7433 apache | ||
+ | 7900 apache | ||
+ | 6381 gdm 9 -11 545148 | ||
+ | 5742 root 20 | ||
+ | 6452 gdm | ||
+ | 6640 colord | ||
+ | 5851 gdm | ||
+ | 9365 trainee | ||
+ | 6454 gdm | ||
+ | 6477 gdm | ||
+ | 6599 gdm | ||
+ | 629 root 20 | ||
+ | 5787 root 20 | ||
+ | 6436 gdm | ||
+ | 5704 root 20 | ||
+ | 6482 gdm | ||
+ | 7429 root 20 | ||
+ | 7618 root 20 | ||
+ | 6377 gdm 9 -11 326096 | ||
+ | 5671 root 20 | ||
+ | 7896 root 20 | ||
+ | 9357 root 20 | ||
+ | 5736 root 20 | ||
+ | 614 root 20 | ||
+ | 5765 root 20 | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Pour ne pas visualiser les processus zombies ou les processus en attente, appuyez sur la touche i : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# top | ||
+ | top - 14:44:10 up 2 days, 1:59, 1 user, load average: 0.00, 0.00, 0.00 | ||
+ | Tasks: 199 total, | ||
+ | %Cpu(s): | ||
+ | MiB Mem : | ||
+ | MiB Swap: | ||
+ | |||
+ | PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND | ||
+ | 6049 gdm | ||
+ | 10744 root 20 | ||
+ | </ | ||
+ | |||
+ | Pour quitter top, appuyez sur la touche **q**. | ||
+ | |||
+ | Les options de cette commande sont : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# top --help | ||
+ | top: inappropriate ' | ||
+ | Usage: | ||
+ | top -hv | -bcEeHiOSs1 -d secs -n max -u|U user -p pid(s) -o field -w [cols] | ||
+ | </ | ||
+ | |||
+ | ====1.5 - Les Commandes fg, bg et jobs==== | ||
+ | |||
+ | Normalement les commandes s’exécutent en avant plan. Vous pouvez également lancer des processus en arrière plan (en tâche de fond). Si vous lancez une commande en tâche de fond, il faut rajouter **(espace)& | ||
+ | |||
+ | < | ||
+ | # sleep 9999 & | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | Notez qu’un processus en arrière plan est dit **asynchrone** car il se poursuit indépendamment de son parent qui est le shell. En avant plan le processus est dit **synchrone**. | ||
+ | </ | ||
+ | |||
+ | Linux numérote tous les processus qui sont placés en tâches de fond. On parle donc d’un **numéro de tâche**. | ||
+ | |||
+ | La commande **jobs** permet de se renseigner sur les processus en arrière plan : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# sleep 9999 & | ||
+ | [1] 10749 | ||
+ | |||
+ | [root@redhat9 ~]# jobs -l | ||
+ | [1]+ 10749 Running | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** - Notez que le numéro de tâche est indiqué entre [crochets] tandis que le PID ne l'est pas. Le signe **+** qui suit le numéro de tâche [1] indique que la tâche est la dernière a avoir été manipulée. | ||
+ | </ | ||
+ | |||
+ | Si on souhaite envoyer un processus en arrière plan de façon à libérer le shell pour d’autres commandes, il faut d’abord suspendre le processus en question. Normalement on suspend un processus en utilisant la combinaison de touches < | ||
+ | |||
+ | Par exemple : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# sleep 1234 | ||
+ | ^Z | ||
+ | [2]+ Stopped | ||
+ | </ | ||
+ | |||
+ | Un fois suspendu, on utilise la commande **bg** (background) suivi par **%** et le numéro de tâche pour envoyer le processus en arrière plan : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# bg %2 | ||
+ | [2]+ sleep 1234 & | ||
+ | |||
+ | [root@redhat9 ~]# jobs -l | ||
+ | [1]- 10749 Running | ||
+ | [2]+ 10750 Running | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** - Notez que lors du passage en arrière plan, le processus reprend son exécution normalement. Le caractère **-** qui suit le numéro de tâche [1] indique que la tâche est l' | ||
+ | </ | ||
+ | |||
+ | Pour ramener le processus en avant plan, il faut de nouveau interrompre le processus concerné. Or cette fois-ci, nous ne pouvons pas utiliser la commande < | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# kill -s stop %2 | ||
+ | |||
+ | [2]+ Stopped | ||
+ | </ | ||
+ | |||
+ | Pour ramener le processus en avant plan, on utilise la commande fg : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# fg %2 | ||
+ | sleep 1234 | ||
+ | ^C | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** - Notez l' | ||
+ | </ | ||
+ | |||
+ | Les options de la commande jobs sont : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# help jobs | ||
+ | jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args] | ||
+ | Display status of jobs. | ||
+ | | ||
+ | Lists the active jobs. JOBSPEC restricts output to that job. | ||
+ | Without options, the status of all active jobs is displayed. | ||
+ | | ||
+ | Options: | ||
+ | -l lists process IDs in addition to the normal information | ||
+ | -n lists only processes that have changed status since the last | ||
+ | notification | ||
+ | -p lists process IDs only | ||
+ | -r restrict output to running jobs | ||
+ | -s restrict output to stopped jobs | ||
+ | | ||
+ | If -x is supplied, COMMAND is run after all job specifications that | ||
+ | appear in ARGS have been replaced with the process ID of that job's | ||
+ | process group leader. | ||
+ | | ||
+ | Exit Status: | ||
+ | Returns success unless an invalid option is given or an error occurs. | ||
+ | If -x is used, returns the exit status of COMMAND. | ||
+ | </ | ||
+ | |||
+ | ====1.6 - La Commande wait==== | ||
+ | |||
+ | Cette commande permet de doter un processus asynchrone du comportement d'un processus synchrone. Elle est utilisée pour attendre jusqu’à ce qu'un processus en tâche de fond soit terminé : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# jobs -l | ||
+ | [1]+ 10749 Running | ||
+ | |||
+ | [root@redhat9 ~]# wait %1 | ||
+ | ^C | ||
+ | |||
+ | [root@redhat9 ~]# jobs -l | ||
+ | [1]+ 10749 Running | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** - Notez que l' | ||
+ | </ | ||
+ | |||
+ | ====1.7 - La Commande nice==== | ||
+ | |||
+ | Cette commande affiche ou modifie la priorité d’un processus. La priorité par défaut de nice est 10. La valeur de nice la plus prioritaire est -20. La valeur la moins prioritaire est 19 : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# nice -n -20 sleep 1234 | ||
+ | ^Z | ||
+ | [2]+ Stopped | ||
+ | |||
+ | [root@redhat9 ~]# ps lx | grep sleep | ||
+ | 0 | ||
+ | 4 | ||
+ | 0 | ||
+ | |||
+ | [root@redhat9 ~]# nice -n 19 sleep 5678 | ||
+ | ^Z | ||
+ | [3]+ Stopped | ||
+ | |||
+ | [root@redhat9 ~]# ps lx | grep sleep | ||
+ | 0 | ||
+ | 4 | ||
+ | 0 | ||
+ | 0 | ||
+ | </ | ||
+ | |||
+ | Comme vous pouvez constater la 6ième colonne contient la valeur de nice qui s' | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** - Notez que seul root peut lancer des processus avec une valeur négative. | ||
+ | </ | ||
+ | |||
+ | Les options de cette commande sont : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# nice --help | ||
+ | Usage: nice [OPTION] [COMMAND [ARG]...] | ||
+ | Run COMMAND with an adjusted niceness, which affects process scheduling. | ||
+ | With no COMMAND, print the current niceness. | ||
+ | -20 (most favorable to the process) to 19 (least favorable to the process). | ||
+ | |||
+ | Mandatory arguments to long options are mandatory for short options too. | ||
+ | -n, --adjustment=N | ||
+ | --help | ||
+ | --version | ||
+ | |||
+ | NOTE: your shell may have its own version of nice, which usually supersedes | ||
+ | the version described here. Please refer to your shell' | ||
+ | for details about the options it supports. | ||
+ | |||
+ | GNU coreutils online help: < | ||
+ | Full documentation < | ||
+ | or available locally via: info ' | ||
+ | </ | ||
+ | |||
+ | ====1.8 - La Commande renice==== | ||
+ | |||
+ | Cette commande modifie la priorité d’un processus déjà en cours. La valeur de la priorité ne peut être modifiée que par le propriétaire du processus ou par root. | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# jobs -l | ||
+ | [1] 10749 Running | ||
+ | [2]- 10775 Stopped | ||
+ | [3]+ 10778 Stopped | ||
+ | |||
+ | [root@redhat9 ~]# bg %2 | ||
+ | [2]- nice -n -20 sleep 1234 & | ||
+ | |||
+ | [root@redhat9 ~]# bg %3 | ||
+ | [3]+ nice -n 19 sleep 5678 & | ||
+ | |||
+ | [root@redhat9 ~]# jobs -l | ||
+ | [1] 10749 Running | ||
+ | [2]- 10775 Running | ||
+ | [3]+ 10778 Running | ||
+ | |||
+ | [root@redhat9 ~]# renice +5 10775 | ||
+ | 10775 (process ID) old priority -20, new priority 5 | ||
+ | |||
+ | [root@redhat9 ~]# renice -5 10778 | ||
+ | 10778 (process ID) old priority 19, new priority -5 | ||
+ | |||
+ | [root@redhat9 ~]# ps lx | grep sleep | ||
+ | 0 | ||
+ | 4 | ||
+ | 0 | ||
+ | 0 | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** -Notez que seul root peut décrémenter la valeur de priorité avec la commande renice. | ||
+ | </ | ||
+ | |||
+ | Les options de cette commande sont : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# renice --help | ||
+ | |||
+ | Usage: | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Alter the priority of running processes. | ||
+ | |||
+ | Options: | ||
+ | -n, --priority < | ||
+ | -p, --pid interpret arguments as process ID (default) | ||
+ | -g, --pgrp | ||
+ | -u, --user | ||
+ | |||
+ | -h, --help | ||
+ | -V, --version | ||
+ | |||
+ | For more details see renice(1). | ||
+ | </ | ||
+ | |||
+ | ====1.9 - La Commande nohup==== | ||
+ | |||
+ | Cette commande permet à un processus de poursuivre son exécution après la déconnexion. Un processus enfant meurt quand le processus parent meure ou se termine. Comme une connexion est un processus, quand vous vous déconnectez, | ||
+ | |||
+ | < | ||
+ | nohup lp ventes.txt & | ||
+ | </ | ||
+ | |||
+ | Les options de cette commande sont : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# nohup --help | ||
+ | Usage: nohup COMMAND [ARG]... | ||
+ | or: nohup OPTION | ||
+ | Run COMMAND, ignoring hangup signals. | ||
+ | |||
+ | --help | ||
+ | --version | ||
+ | |||
+ | If standard input is a terminal, redirect it from an unreadable file. | ||
+ | If standard output is a terminal, append output to ' | ||
+ | ' | ||
+ | If standard error is a terminal, redirect it to standard output. | ||
+ | To save output to FILE, use 'nohup COMMAND > FILE'. | ||
+ | |||
+ | NOTE: your shell may have its own version of nohup, which usually supersedes | ||
+ | the version described here. Please refer to your shell' | ||
+ | for details about the options it supports. | ||
+ | |||
+ | GNU coreutils online help: < | ||
+ | Full documentation < | ||
+ | or available locally via: info ' | ||
+ | </ | ||
+ | |||
+ | ====1.10 - La Commande kill==== | ||
+ | |||
+ | La commande kill envoie des signaux aux processus. La liste des signaux possibles peut être afficher avec l' | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# kill -l | ||
+ | 1) SIGHUP | ||
+ | 6) SIGABRT | ||
+ | 11) SIGSEGV | ||
+ | 16) SIGSTKFLT | ||
+ | 21) SIGTTIN | ||
+ | 26) SIGVTALRM | ||
+ | 31) SIGSYS | ||
+ | 38) SIGRTMIN+4 | ||
+ | 43) SIGRTMIN+9 | ||
+ | 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 | ||
+ | 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 | ||
+ | 58) SIGRTMAX-6 | ||
+ | 63) SIGRTMAX-1 | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Important** - Vous constaterez que chaque signal possède un numéro. Ces numéros de signaux sont utilisés à la place des options. Par exemple, **-19** à la place de l' | ||
+ | </ | ||
+ | |||
+ | Parmi les numéros de signaux les plus utiles on trouve : | ||
+ | |||
+ | ^ Numéro ^ Description ^ | ||
+ | | -1 | Le signal Hang Up est envoyé à tous les enfants d'un processus quand il se termine | | ||
+ | | -2 | Interruption du processus - équivalent à < | ||
+ | | -3 | La même chose que -2 mais avec la génération d'un fichier de déboggage | | ||
+ | | -9 | Le signal qui tue un processus brutalement | | ||
+ | | -15 | Le signal envoyé par défaut par la commande **kill**. Le processus se termine normalement | | ||
+ | |||
+ | Les options de cette commande sont : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# help kill | ||
+ | kill: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec] | ||
+ | Send a signal to a job. | ||
+ | | ||
+ | Send the processes identified by PID or JOBSPEC the signal named by | ||
+ | SIGSPEC or SIGNUM. | ||
+ | SIGTERM is assumed. | ||
+ | | ||
+ | Options: | ||
+ | -s sig SIG is a signal name | ||
+ | -n sig SIG is a signal number | ||
+ | -l list the signal names; if arguments follow `-l' they are | ||
+ | assumed to be signal numbers for which names should be listed | ||
+ | -L synonym for -l | ||
+ | | ||
+ | Kill is a shell builtin for two reasons: it allows job IDs to be used | ||
+ | instead of process IDs, and allows processes to be killed if the limit | ||
+ | on processes that you can create is reached. | ||
+ | | ||
+ | Exit Status: | ||
+ | Returns success unless an invalid option is given or an error occurs. | ||
+ | </ | ||
+ | |||
+ | ====1.11 - La Commande pkill==== | ||
+ | |||
+ | La commande pkill permet d' | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# pkill -HUP rsyslogd | ||
+ | </ | ||
+ | |||
+ | Les options de cette commande sont : | ||
+ | |||
+ | < | ||
+ | [root@redhat9 ~]# pkill --help | ||
+ | |||
+ | Usage: | ||
+ | pkill [options] < | ||
+ | |||
+ | Options: | ||
+ | | ||
+ | -q, --queue < | ||
+ | -e, --echo | ||
+ | -c, --count | ||
+ | -f, --full | ||
+ | -g, --pgroup < | ||
+ | -G, --group < | ||
+ | -i, --ignore-case | ||
+ | -n, --newest | ||
+ | -o, --oldest | ||
+ | -O, --older < | ||
+ | -P, --parent < | ||
+ | -s, --session < | ||
+ | -t, --terminal < | ||
+ | -u, --euid < | ||
+ | -U, --uid < | ||
+ | -x, --exact | ||
+ | -F, --pidfile < | ||
+ | -L, --logpidfile | ||
+ | -r, --runstates < | ||
+ | --ns < | ||
+ | | ||
+ | | ||
+ | the --ns option. | ||
+ | | ||
+ | |||
+ | -h, --help | ||
+ | -V, --version | ||
+ | |||
+ | For more details see pgrep(1). | ||
+ | </ | ||
+ | |||
+ | ----- | ||
+ | Copyright © 2024 Hugh Norris. |