Shell, subshell, fonte, processo em segundo plano, PID == confusion

1

Estou tentando entender como todas essas coisas são colocadas juntas. Por exemplo, com este script:

#!/bin/bash

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

sleep 5

Como são os PIDs? O que é um processo separado e o que não é? O processo de segundo plano é o mesmo que um subnível?

    
por Pithikos 27.08.2014 / 11:33

1 resposta

1

. script1 - não é um processo separado; O script1 é executado no shell atual . veja help .

./script2 - assim como chamar qualquer comando externo, bifurca um novo processo e aguarda conclusão

. script3 & - sim, um processo separado. Um exemplo:

$ 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

Veja o manual da bash, Lista de comandos :

If a command is terminated by the control operator ‘&’, the shell executes the command asynchronously in a subshell.

./script4 & - sim, um processo separado.

    
por 27.08.2014 / 15:47

Tags