Как получить идентификатор процесса скрипта, запущенного в другом скрипте - PullRequest
0 голосов
/ 30 апреля 2020

Это немного сложный случай для меня.

Я хочу отследить, завершен ли 'script1_sparkSubmit01. sh' или нет, что вызвано Main.sh; если нет, то дождитесь его завершения; если выполнено, продолжите работу с остальными сценариями в основном. sh.

Основной сценарий: Основной. 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 дает случайное значение, которое при поиске недоступно в текущей оболочке. Тем не менее, я вижу команду 'spark-submit' script1_sparkSubmit01. sh, работающую в текущей оболочке.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 30 апреля 2020

Взяв PID из скрипта, который вызывает 'script1_sparkSubmit01. sh' - мне это удалось.

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 &
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...