Выполнить 3 задания последовательно - PullRequest
1 голос
/ 24 сентября 2019

Я новичок в оболочке.Я пытаюсь запустить 3 задания последовательно.Но я не уверен, где я иду не так.Задания не выполняются в последовательности.Пожалуйста, помогите в этом.

Job 1
Job 2
Job 3

Вот скрипт для запуска заданий:

#!/bin/bash
{
sync;
echo 3 > /proc/sys/vm/drop_caches

/data/Job1.sh

if [ `ps -ef | egrep 'awk' | egrep -v egrep | wc -l` -gt 1 ]]


    /data/Job2.sh

if [[ `ps -ef | egrep 'awk' | egrep -v egrep | wc -l` -gt 1 ]];

    /data/Job3.sh

fi
}

ОБНОВЛЕНИЕ:

#!/bin/sh
if [ $1 ]; then
        NUM_PROC=$1
else
        NUM_PROC=10
fi

for i in `seq 0 $((NUM_PROC-1))`; do
        awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}' &
done

echo "PIDS: `pidof awk`"

**Shell script running: **scripts/job.sh 5****

1 Ответ

2 голосов
/ 24 сентября 2019

Вы можете использовать wait, если хотите использовать его как дочерний процесс.В противном случае удалите & после $job и всю строку wait $!, как указано в примере.

#! /bin/bash

JOB_ARRAY=("/data/Job1.sh" "/data/Job2.sh" "/data/Job3.sh")
for job in "${JOB_ARRAY[@]}"; do
    sync;
    echo 3 > /proc/sys/vm/drop_caches;

    echo "Starting job $job"
    $job &  # remove `&`
    echo "Started job with pid $!"

    wait $! # remove entire line
    echo "Job finished, exit code is $?"
done
exit 0

РЕДАКТИРОВАТЬ:
В сценариях JobX.sh вам придется подождатьпока дочерние процессы не завершены.Добавьте следующий код к каждому скрипту JobX.sh:


NUM_PROC=$1
[ ! -z "${NUM_PROC}" ] || NUM_PROC=10

for i in `seq 0 $((NUM_PROC-1))`; do
        awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}' &
done

echo "PIDS: `pidof awk`"

# Wait for every child process to finish
wait
exit $?

ps, вы всегда должны заканчивать свои скрипты с exit.Всегда заключайте переменные в "", если вы используете их в операторах if, while, fir (и т. Д.).И попробуйте сделать функции вместо отдельных скриптов:

#! /bin/bash
function _test_echo {
    local message=$1
    echo $message
}
_test_echo "Hello world!"
exit 0

Удачи в скриптах!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...