ক্রোনট্যাবগুলি [বন্ধ] বিশ্লেষণ করুন এবং অনুকূলিত করুন


9

গ্রাফ, বিশ্লেষণ এবং ক্রন্টব এক্সিকিউশনটি অনুকূলকরণে সহায়তা করার কোনও সরঞ্জাম আছে কি?

স্পষ্ট করার জন্য, আমি এমন একটি সরঞ্জামের কথা ভাবছি যা ক্রোন জবগুলি কার্যকর করার সময় একটি গ্রাফ তৈরি করবে এবং সিসাদমিনকে স্মার্টলি পুনর্গঠনে সহায়তা করবে।


1
আমি আমার মাথার উপরের দিক থেকে কিছু ভাবতে পারি না, তবে এটি আগামীকাল সোমবার ব্যাংক হলিডে সোমবার, তাই আমি একটি লেখার জন্য যেতে পারি।
টম ও'কনোর

উত্তর:


4

নির্ভরযোগ্যতাগুলি গ্রাফ নির্ভরতা এবং প্রভাব ডাউনটাইম উইন্ডোগুলির মধ্যে দৃশ্যমানতা অর্জনের জন্য ক্রোন জবগুলিকে একটি কাঠামোগত কাজের শিডিয়ুলারে সরানো আমি কেবল একমাত্র কাজটি করেছি ।


এটি আকর্ষণীয় তবে বাস্তবায়নের পক্ষে বেশ ভারী।
haphink

এটি 1200-লাইনের ক্রন্টব আমি ব্যবহার করছিলাম ... তবে হ্যাঁ, খুব ভারী। আমি হালকা ওজনের কিছু দেখতে চাই।
ew white

2

প্রতিটি ক্রোন কাজের জন্য একটি অনন্য আইডি বরাদ্দ করার জন্য কাঠামোর কিছু প্রকারের লগ ফাইল (গুলি), এবং / অথবা রানটাইম তথ্য রেকর্ড করার জন্য একটি নির্দিষ্ট স্থানে লগ ইন (সাধারণ আউটপুট লগের বিপরীতে) corre আপনি এটি নকশা করেন তবে এটি তুচ্ছ হতে যাচ্ছে না, তবে ছোট সিস্টেমগুলির জন্য এটি আপনার ক্রন্টব্যাব এবং লগ ফাইলগুলি দেখে এটি চোখের সামনে ফেলে দেওয়া সহজ।

আমি ধরে নিয়েছি আপনি যদিও ছোট সিস্টেমের বিষয়ে কথা বলছেন না।


আমি এই ধারণাটি পছন্দ করি এবং এটি একটি মোড়ক / কাঠামোর পরিবর্তে ক্রোন নিজেই তুলনামূলকভাবে সহজেই প্রয়োগ করা যেতে পারে। অনন্য শনাক্তকারীটির জন্য ক্রডটাব লাইনটি কেবলমাত্র md5sum করুন এবং স্টপ সময়গুলি লগ করতে সাইনচিল্ড ট্র্যাক করুন।
মার্ক ওয়াগনার

2

এর মতো শব্দগুলি হ'ল আপনি যে কার্যকারিতাটি পছন্দ করতে চান http://www.phpclasses.org/package/6673-PHP-Parse-crontab-schedule-and-generate-Gantt-charts.html

আমি উপরোক্ত বিষয়ে কোন নিশ্চয়তা দিতে পারি না, এটি কেবলমাত্র কিছু ওয়েব অনুসন্ধানের ফলাফল।


0

সময় অনুসারে বাছাই করা সমস্ত সিস্টেমের কাজগুলি মুদ্রণের জন্য একটি স্ক্রিপ্ট

#!/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}"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.