Shell 脚本中的“线程”

Moo*_*Moo 4 scripting unix-shell

我有一种情况需要:

  1. 在脚本 A 中做一些前导设置
  2. 一起启动脚本 B、C、D 和 E,以便它们同时运行
  3. 当所有四个脚本都退出时,在脚本 A 中进行一些清理

目前,我在脚本 B - D 中运行了标志,用于设置脚本是否仍在运行,并且在触发四个脚本后,脚本 A 处于等待循环中检查这些标志文件。

有一个更好的方法吗?

背景是这是一个使用快照的 AIX 服务器的备份脚本 - 脚本 A 在我们希望备份的文件系统上获取 JFS2 快照(它们都需要同时完成,因为我们有分布在不同文件系统上的相关数据- 这不能改变),脚本 B - D 从快照中对这些文件系统进行实际备份(三个 rsync 到不同的服务器,一个磁带备份),然后脚本 A 在所有文件复制后删除快照(包括到磁带)完成。

Bal*_*sár 8

使用 bash,您可以执行以下操作:

init # do the preamble setup of script A

scriptB & # start in background
scriptC & # start in background
scriptD & # start in background

wait # wait for all background jobs to finish

cleanup # do the cleanup part of script A
Run Code Online (Sandbox Code Playgroud)