bash - 如何确定 autosys 作业需要多长时间才能进入“成功”状态
问题描述
谁能帮助我,我正在尝试查找 autosys 作业的当前状态,如下所示: autorep -j jobname -d -L0 | grep "RUNNING" 如果它没有运行,我必须强制启动相同的工作。在成功重新启动同一个作业后,我必须等到作业状态为 SUCCESS 才能继续我的 shell 脚本中的其余命令。请指导,非常感谢您的帮助。下面是我的代码
status=`autorep -j jobname -d -L0 | grep "RUNNING"| awk '{print$1}'
echo $status
if["$status"=="RUNNING"];then
echo "The job is in RUNNING state"
else
echo "Force starting the job now !"
fsj jobname
fi
并且,在作业状态成功后,我可以继续编写其余的脚本。但问题是,如何知道我是否必须睡眠 30 分钟、40 分钟等(appx 作业运行 30 分钟)有没有办法在作业成功后自动触发下一个命令......而不是使用睡眠。再次感谢。
解决方案
while sleep 900; do autorep -j jobname -d -L0 |
awk '$1~/RUNNING/{r=1} END{if(!r) system("fsj jobname")}'; done &
此后台循环将每 15 分钟检查一次 autorep 输出的第一列是否有“RUNNING”,fsj jobname
如果找不到匹配项则执行。如果您可以识别它,您还可以跟踪相关进程的 PID。
推荐阅读
- python - 功能“消除选定的多边形”不适用于 PyQGIS
- javascript - 在 JS 中渲染部分 slim html 模板
- python - 如何访问 autocorrelation_plot 生成的数据?
- c# - 如果它击中NOTHING,统一删除对象
- oracle - 如何设置每 10 分钟运行一次 SQL 查询
- heroku - 部署 heroku Strapi 应用程序有什么问题
- ios - 通过 NSKeyValueObservation 观察到的 AVPlayer 值始终为零
- lotus-notes - 将鼠标悬停在 Action Hot-Spot Notes 客户端上的文本上
- shell - 如何知道我的计算机中是否安装了 Dart 或 Flutter?
- ms-access - 无法将访问表单链接到数据集