Execução do Script Paralelo de um único Cron Job

0

Como executar um command/script (Task-B) diferente em um modo paralelo, enquanto a tarefa primária command/script (Task-A) está excedendo a janela / período de tempo definido; que é mencionado no crontab ?

@ Ambiente de produção, não tendo gnome-terminal .

    
por Shankar Majumder 02.06.2017 / 14:04

2 respostas

0

Como l0b0 mencionou em sua resposta , o arquivo crontab especifica apenas a hora de início dos trabalhos. Não importa se o trabalho leva horas para ser executado e será bem-sucedido quando o próximo horário de início chegar, mesmo que a encarnação anterior do trabalho ainda esteja em execução.

A partir de sua descrição, parece que você deseja que a tarefa B seja iniciada se a tarefa A demorar muito para ser executada.

Você pode conseguir isso combinando as duas tarefas em um único script e o mesmo:

#!/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
    
por 02.06.2017 / 20:25
2

Isso acontecerá por padrão. Cron executa todas as tarefas agendadas para um determinado minuto aproximadamente ao mesmo tempo. Não há fila, e definitivamente não há janela / período de tempo. Há apenas um conjunto de horários de início.

    
por 02.06.2017 / 15:01