我需要按顺序运行多个 shell 脚本 (s1.sh、s2.sh、s3.sh),要求如下:
- 如果脚本 1 分钟内没有输出(stdout 或 stderr),则应终止
- 终止后,下一个脚本将自动运行
- 这应该持续到所有脚本都处理完毕
现状:
- 脚本在任务完成后不会自行退出
- 目前,我手动监控每个脚本,Ctrl-c当发现一段时间没有输出时,请按
- 需要自动化这种手动干预
工作流程示例:
- 运行 s1.sh
- 如果 s1.sh 静默 1 分钟 → 终止它 → 运行 s2.sh
- 如果 s2.sh 静默 1 分钟 → 终止它 → 运行 s3.sh
- ...等等
我正在考虑的潜在方法:我正在考虑将 stdout 和 stderr 重定向到一个文件,并每秒检查一次该文件的修改时间。如果该文件 1 分钟内没有被写入,我可以假设脚本没有输出并终止它。但是,我不确定这种方法是否可行,或者是否有更好的解决方案。
有人实现过类似的东西吗?谢谢。