Shell、子shell、源、后台进程、PID==混淆

Shell、子shell、源、后台进程、PID==混淆

我正在努力弄清楚如何将所有这些东西组合在一起。例如,使用以下脚本:

#!/bin/bash

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

sleep 5

PID 是什么样子的?什么是单独进程,什么不是?后台进程和子 shell 一样吗?

答案1

. script1-- 不是一个单独的进程;script1 在当前的壳。参见help .

./script2-- 就像调用任何外部命令一样,分叉一个新进程并等待完成

. script3 &——是的,一个单独的过程。例如:

$ 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

请参阅 bash 手册,命令列表

如果命令以控制运算符“&”终止,则 shell 会在子 shell 中异步执行该命令。

./script4 &——是的,一个单独的过程。

相关内容