Выполнение параллельного сценария из одного задания Cron

Как выполнить другую команду / сценарий (Задача-B) в параллельном режиме, в то время как основная задача команда / сценарий (Задача-A) - превышение установленного временного окна / периода; который упоминается в crontab ?

@ Производственной среде, не имеющей gnome-terminal .

0
02.06.2017, 18:53
2 ответа

Как l0b0 упомянул в своем ответе, файл crontab указывает только время запуска заданий. Ему все равно, если задание выполняется часами, и он с радостью запустит его снова, когда наступит следующее время запуска, даже если предыдущее воплощение задания все еще выполняется.

Судя по вашему описанию, вы хотите, чтобы задача B запускалась, если задача A выполняется слишком долго.

Вы можете добиться этого, объединив две задачи в один и тот же скрипт:

#!/bin/sh

timeout=600     # time before task B is started
lockfile=$(mktemp)
trap 'rm -f "$lockfile"' EXIT INT TERM QUIT

# Start task A
# A "lock file" is created to signal that the task is still running.
# It is deleted once the task has finished.

( touch "$lockfile" && start_task_A; rm -f "$lockfile" ) &
task_A_pid="$!"

sleep 1     # allow task A to start

# If task A started, sleep and then check whether the "lock file" exists.
if [ -f "$lockfile" ]; then
    sleep "$timeout"

    if [ -f "$lockfile" ]; then
        # This is task B.
        # In this case, task B's task is to kill task A (because it's
        # been running for too long).
        kill "$task_A_pid"
    fi
fi
0
28.01.2020, 02:33

Это происходит по умолчанию. Cron запускает все задания, запланированные на данную минуту, примерно в одно и то же время. Там нет очереди, и определенно нет временного окна/периода. Есть только набор времени начала.

2
28.01.2020, 02:33

Теги

Похожие вопросы