gpt4 book ai didi

unix - 如何在 Unix Shell 脚本中进行并行处理?

转载 作者:行者123 更新时间:2023-12-04 20:24:24 25 4
gpt4 key购买 nike

我有一个 shell 脚本,它将 build.xml 文件传输到远程 unix 机器 (devrsp02) 并在该机器 (devrsp02) 上执行 ANT 任务 wldeploy。现在,这个 wldeploy 任务需要大约 15 分钟才能完成,当它运行时,unix 控制台的最后一行是 -

"task {some digit} initialized".



此任务完成后,我们会收到“任务已完成”消息,脚本中的下一个任务仅在此之后执行。

但有时,weblogic 域可能存在问题,部署可能在内部失败,对 wldeploy 任务的状态没有影响。 unix 控制台仍然会卡在“task {some digit} initialized”。部署的错误将记录在一个名为 output.a 的文件中

所以,我现在想要的是——

在运行 wldeploy 之前启动一个时间计数器。如果 wldeploy 运行超过 15 分钟,则应运行以下命令 -

tail -f output.a ## without terminating the wldeploy



或者

cat output.a ## after terminating the wldeploy forcefully



这里要注意的一点是 - 我无法在后台运行 wldeploy 任务,因为在这种情况下,用户不会知道任务何时完成,这对于此脚本至关重要。

你能提出什么建议来实现这一目标吗?

最佳答案

创建此脚本(例如 deploy.sh):

#!/bin/sh
sleep 900 && pkill -n wldeploy && cat output.a &
wldeploy

然后从控制台
chmod +x deploy.sh

然后运行
./deploy.sh

此脚本将启动一个计数器(15 分钟),强行杀死 wldeploy进程是否正在运行,如果进程正在运行,您将看到 output.a 的内容.

如果脚本已终止,则 pkill不会返回 true 和 output.a不会显示。

我会称此任务为监控而不是“并行处理”:)

关于unix - 如何在 Unix Shell 脚本中进行并行处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2810757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com