단일 Cron 작업에서 병렬 스크립트 실행

단일 Cron 작업에서 병렬 스크립트 실행

command/script주 작업 (작업 A)이 에 언급된 정의된 시간 창/기간을 초과 command/script하는 경우 병렬 모드에서 다른 작업(작업 B)을 어떻게 실행할 수 있습니까 crontab?

@프로덕션 환경, 아니요 gnome-terminal.

답변1

이는 기본적으로 발생합니다. 실행할 계획모두같은 시간에 특정 분 동안 예약된 작업입니다. 대기열도 없고 시간 창/슬롯도 전혀 없습니다. 시작 시간 세트는 하나만 있습니다.

답변2

l0b0이 언급했듯이그의 대답에, crontab 파일은 작업 시작 시간만 지정합니다. 이전 버전의 작업이 계속 실행 중이더라도 작업을 실행하는 데 몇 시간이 걸리고 다음 시작 시간이 되면 작업을 다시 시작하더라도 상관하지 않습니다.

귀하의 설명에 따르면 작업 A를 실행하는 데 시간이 너무 오래 걸리면 작업 B를 시작하려는 것 같습니다.

동일한 스크립트에서 두 작업을 결합하여 이를 달성할 수 있습니다.

#!/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

관련 정보