크론 탭 분석 및 최적화 [닫기] 뒷받침 될 것으로

crontab 실행을 그래프, 분석 및 최적화하는 도구가 있습니까?

명확히하기 위해 cron 작업이 실행될 때의 그래프를 생성하고 sysadmin이 현명하게 재구성하는 데 도움이되는 도구를 생각하고 있습니다.



답변

내가 한 유일한 일은 종속성을 그래프로 표시하고 효과 중단 시간 창에 대한 가시성을 얻기 위해 cron 작업을 구조화 된 작업 스케줄러 로 옮기는 것입니다 .


답변

각 cron 작업에 고유 한 ID를 할당하고 로그 파일의 고유 ID를 연관 시키거나 런타임 정보를 기록하기 위해 특정 위치에 로깅하는 일반 프레임 워크와 달리 일종의 프레임 워크. 비록 당신이 그것을 디자인하는 것은 사소한 것이 아니지만, 작은 시스템의 경우 crontabs와 로그 파일을 보면 쉽게 알 수 있습니다.

그래도 작은 시스템에 대해 이야기하고 있지 않다고 가정합니다.


답변

http://www.phpclasses.org/package/6673-PHP-Parse-crontab-schedule-and-generate-Gantt-charts.html 과 같은 기능입니다 .

위의 내용을 보증 할 수는 없으며 일부 웹 검색의 결과 일뿐입니다.


답변

모든 시스템 작업을 시간별로 정렬하여 인쇄하는 스크립트

#!/bin/bash

CRONTAB='/etc/crontab'
CRONDIR='/etc/cron.d'

tab=$(echo -en "\t")

function clean_cron_lines() {
    while read line ; do
        echo "${line}" |
            egrep --invert-match '^($|\s*#|\s*[[:alnum:]_]+=)' |
            sed --regexp-extended "s/\s+/ /g" |
            sed --regexp-extended "s/^ //"
    done;
}

function lookup_run_parts() {
    while read line ; do
        match=$(echo "${line}" | egrep -o 'run-parts (-{1,2}\S+ )*\S+')

        if [[ -z "${match}" ]] ; then
            echo "${line}"
        else
            cron_fields=$(echo "${line}" | cut -f1-6 -d' ')
            cron_job_dir=$(echo  "${match}" | awk '{print $NF}')

            if [[ -d "${cron_job_dir}" ]] ; then
                for cron_job_file in "${cron_job_dir}"/* ; do  # */ <not a comment>
                    [[ -f "${cron_job_file}" ]] && echo "${cron_fields} ${cron_job_file}"
                done
            fi
        fi
    done;
}


temp=$(mktemp) || exit 1


cat "${CRONTAB}" | clean_cron_lines | lookup_run_parts >"${temp}"


cat "${CRONDIR}"/* | clean_cron_lines >>"${temp}"  # */ <not a comment>

while read user ; do
    crontab -l -u "${user}" 2>/dev/null |
        clean_cron_lines |
        sed --regexp-extended "s/^((\S+ +){5})(.+)$/\1${user} \3/" >>"${temp}"
done < <(cut --fields=1 --delimiter=: /etc/passwd)

cat "${temp}" |
    sed --regexp-extended "s/^(\S+) +(\S+) +(\S+) +(\S+) +(\S+) +(\S+) +(.*)$/\1\t\2\t\3\t\4\t\5\t\6\t\7/" |
    sort --numeric-sort --field-separator="${tab}" --key=2 --key=1 |
    sed "1i\mi\th\td\tm\tw\tuser\tcommand" |
    column -s"${tab}" -t

rm --force "${temp}"