Process

Un process correspond à l'exécution d'un fichier. Les process sont organisés en arbre et descendent tous du premier process crée : systemd. Créer un process se fait en plusieurs temps :

  1. le process appelant est dupliqué en utilisant l'appel système fork (ie le shell qui lance la commande). Le process appelant est le process parent, le nouveau process le process enfant. Le fait que le process est dupliqué fait que :
    1. l'environnement des process parent et enfant est le même
    2. le propriétaire (uip) et le groupe (pid) des process parent et enfant sont les mêmes
  2. on associe un numéro, le PID, à ce nouveau process. Ce numéro est unique
  3. le PID du parent est associé à l'enfant via le PPID

Un process d'uid root peut changer son utilisateur et son groupe. Ceci se fait :

Enfin, certains process peuvent avoir les privilèges de root alors qu'ils sont exécutés par de simples utilisateur. Ces process sont lancés par des fichiers possédant le flag setuid ou setgid. Par exemple la commande passwd qui doit pouvoir être exécutée par un utilisateur mais modifier le ficheor /etc/shadow qui est la propriété de root.

Arbre des process

pstree
top
ps aux

/proc/pid

Process foreground/background

TBD : process management

Tout shell possède :

Vie et mort d'un process

créer des process par clone d'un process (on choisit ce qu'on partage avec le père), ex une commande shell : comment ça marche le clone/fork

TBD tuer une xterm dans une xterm. Même avec un & tmux ou screen pour sauver un shell. Mieux que hohup /usr/bin/screen -d -m -S node node exemple.js