গ্রাফ, বিশ্লেষণ এবং ক্রন্টব এক্সিকিউশনটি অনুকূলকরণে সহায়তা করার কোনও সরঞ্জাম আছে কি?
স্পষ্ট করার জন্য, আমি এমন একটি সরঞ্জামের কথা ভাবছি যা ক্রোন জবগুলি কার্যকর করার সময় একটি গ্রাফ তৈরি করবে এবং সিসাদমিনকে স্মার্টলি পুনর্গঠনে সহায়তা করবে।
গ্রাফ, বিশ্লেষণ এবং ক্রন্টব এক্সিকিউশনটি অনুকূলকরণে সহায়তা করার কোনও সরঞ্জাম আছে কি?
স্পষ্ট করার জন্য, আমি এমন একটি সরঞ্জামের কথা ভাবছি যা ক্রোন জবগুলি কার্যকর করার সময় একটি গ্রাফ তৈরি করবে এবং সিসাদমিনকে স্মার্টলি পুনর্গঠনে সহায়তা করবে।
উত্তর:
নির্ভরযোগ্যতাগুলি গ্রাফ নির্ভরতা এবং প্রভাব ডাউনটাইম উইন্ডোগুলির মধ্যে দৃশ্যমানতা অর্জনের জন্য ক্রোন জবগুলিকে একটি কাঠামোগত কাজের শিডিয়ুলারে সরানো আমি কেবল একমাত্র কাজটি করেছি ।
প্রতিটি ক্রোন কাজের জন্য একটি অনন্য আইডি বরাদ্দ করার জন্য কাঠামোর কিছু প্রকারের লগ ফাইল (গুলি), এবং / অথবা রানটাইম তথ্য রেকর্ড করার জন্য একটি নির্দিষ্ট স্থানে লগ ইন (সাধারণ আউটপুট লগের বিপরীতে) corre আপনি এটি নকশা করেন তবে এটি তুচ্ছ হতে যাচ্ছে না, তবে ছোট সিস্টেমগুলির জন্য এটি আপনার ক্রন্টব্যাব এবং লগ ফাইলগুলি দেখে এটি চোখের সামনে ফেলে দেওয়া সহজ।
আমি ধরে নিয়েছি আপনি যদিও ছোট সিস্টেমের বিষয়ে কথা বলছেন না।
এর মতো শব্দগুলি হ'ল আপনি যে কার্যকারিতাটি পছন্দ করতে চান 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}"