Shell 脚本中的“线程”

Shell 脚本中的“线程”

我遇到以下情况,需要:

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

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

有一个更好的方法吗?

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

答案1

使用 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

相关内容