在一个 shell 脚本中,通过用 & 的方式将一条命令或一个方法放到后台执行,相当于又起来一个子进程
在其启动子进程的后面紧接用变量 $! 可以获得该子任务进程的 pid
脚本中可以通过 wait 方式,等待该进程执行完才推出,从而在shell脚步中实现并发
wait 不加参数 相当于等待所有子进程结束,wait + 子进程 pid 相当于等待某个子进程结束
注意,shell 脚步退出了,他的子进程并不会跟着推出,因为他们之间是独立的进程
同样在子任务中调用 exit 退出子任务,并不会影响 shell 脚步继续执行
PID是程序被操作系统加载到内存成为进程后动态分配的资源。
PPID(parent process ID):PPID是程序的父进程号。
父进程退出并不会通知子进程推出,子进程会被pid 为1 的init进程领养
过多的子进程是会拖慢运行速度的
shell 模拟并发脚本:
note: 在脚本中如果强制父进程退出了,子进程如果还在运行并不会退出
1 |
|