1 votes

Shell, sous-shell, source, processus en arrière-plan, PID == confusion

Je suis en train de tenter de clarifier mes idées sur la manière dont toutes ces choses sont assemblées. Par exemple avec ce script :

#!/bin/bash

. script1
./script2
. script3 &
./script4 &

sleep 5

À quoi ressemblent les PIDs ? Qu'est-ce qu'un processus séparé et qu'est-ce qui ne l'est pas ? Est-ce qu'un processus en arrière-plan est la même chose qu'un sous-shell ?

1voto

Abbas Points 3737

. script1 -- pas un processus séparé; script1 est exécuté dans le shell actuel. voir help .

./script2 -- tout comme appeler une commande externe, crée un nouveau processus et attend son achèvement

. script3 & -- oui, un processus séparé. Un exemple :

$ cat script3
sleep 300
$ . script3 &
[1] 15136
$ echo $$
15102
$ ps -ef | grep $$
jackman  15102 32659  0 09:43 pts/0    00:00:00 bash
jackman  15136 15102  0 09:44 pts/0    00:00:00 bash
jackman  15157 15102  0 09:44 pts/0    00:00:00 ps -ef
jackman  15158 15102  0 09:44 pts/0    00:00:00 grep --color=auto 15102

Veuillez consulter le manuel de bash, Listes de commandes:

Si une commande est terminée par l'opérateur de contrôle ‘&’, le shell exécute la commande de manière asynchrone dans un sous-shell.

./script4 & -- oui, un processus séparé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X