如何检索在不同脚本中运行的脚本的进程ID。

问题描述 投票:0回答:1

这对我来说是一个有点复杂的案例。

我想跟踪'script1_sparkSubmit01.sh'是否完成,这是由Main.sh触发的;如果没有,则等待它完成;如果完成,则继续执行main.sh中的剩余脚本。

主脚本。主脚本:main.sh

ksh script1_sparkSubmit01.sh 2>&1 &
pid=$!
echo $pid
while [ 1 ]
do
    [ -n "$pid" ] && sleep 60 || break
done
ksh script2_sparkSubmit02.sh 2>&1 &

另一个脚本:script1_sparkSubmit01.sh。

spark-submit --jars $sqldriver_jar_path  $spark_jar_path/table-load_2.11-1.0.jar  >> ${log_dir}/$log_file_name1 2>&1 &

目前,pid给了一些随机的值,当我查找时,在当前shell中是不可用的。然而,我看到 script1_sparkSubmit01.sh 的'spark-submit'命令在当前 shell 中运行。

请大家帮忙。

unix process scripting
1个回答
0
投票

从'script1_sparkSubmit01.sh'触发的脚本中提取PID--对我来说确实可行。

ksh script1_sparkSubmit01.sh 2>&1 & 

while [ 1 ]
do
    pid=$(ps -aux | grep 'table-load_2.11-1.0.jar' | grep -v "grep" | awk '{print $2}')
    [ -n "$pid" ] && sleep 30 || break
done
ksh script2_sparkSubmit01.sh 2>&1 &
© www.soinside.com 2019 - 2024. All rights reserved.