මම cron
වැරදි ලෙස රැකියා සැකසුවහොත් ඒවා නිහ ly ව අසමත් වන බවක් පෙනේ. වැරැද්ද කුමක්දැයි වටහා ගැනීමට මම වැරදි ලොගයක් සෙවිය යුත්තේ කොතැනින්ද?
මම cron
වැරදි ලෙස රැකියා සැකසුවහොත් ඒවා නිහ ly ව අසමත් වන බවක් පෙනේ. වැරැද්ද කුමක්දැයි වටහා ගැනීමට මම වැරදි ලොගයක් සෙවිය යුත්තේ කොතැනින්ද?
Answers:
අනෙක් අය පෙන්වා දී ඇති පරිදි, cron
එය ක්රියාත්මක වන ඕනෑම වැඩසටහනක ප්රතිදානය ඔබට විද්යුත් තැපැල් කරනු ඇත (කිසියම් ප්රතිදානයක් තිබේ නම්). එබැවින්, ඔබට කිසිදු ප්රතිදානයක් නොලැබුනේ නම්, මූලික වශයෙන් හැකියාවන් තුනක් ඇත:
crond
වැඩසටහන ක්රියාත්මක කිරීම හෝ විද්යුත් තැපෑල යැවීම සඳහා කවචයක් ආරම්භ කිරීමට පවා නොහැකි වියcrond
ප්රතිදානය තැපැල් කිරීමේදී කරදර ඇති විය, නැතහොත් තැපෑල නැති විය.1 වන නඩුව ඉතා අසීරු ය, නමුත් ක්රෝන් ල .ු-සටහන් වල යමක් ලියා තිබිය යුතුය. ක්රොන්ට තමන්ගේම වෙන් කර ඇති සිස්ලොග් පහසුකමක් ඇත, එබැවින් /etc/syslog.conf
පහසුකම් cron
පිළිබඳ පණිවිඩ යවනු ලබන්නේ කොතැනට දැයි බැලීමට (හෝ ඔබේ ඩිස්ට්රෝ හි සමාන ගොනුවක්) තිබිය යුතුය . ජනප්රිය ගමනාන්ත අතර /var/log/cron
, /var/log/messages
සහ /var/log/syslog
.
2. අවස්ථාවෙහිදී, ඔබ තැපැල් ඩීමන් ල logs ු-සටහන් පරීක්ෂා කළ යුතුය: ක්රෝන් ඩීමන් වෙතින් පණිවිඩ සාමාන්යයෙන් දිස්වන්නේ root@yourhost
. MAILTO=...
නිශ්චිත ලිපිනයකට ක්රෝන් ඊමේල් යැවීමට ඔබට ක්රොන්ටාබ් ගොනුවේ පේළියක් භාවිතා කළ හැකිය , එමඟින් තැපැල් ඩීමන් ලොග් ග්රහණය කර ගැනීම පහසු කරයි. උදාහරණයක් වශයෙන්:
MAILTO=my.offsite.email@example.org
00 15 * * * echo "Just testing if crond sends email"
3 වැනි අවස්ථාවෙහිදී, ඔබට පහසුවෙන් පරීක්ෂා කළ හැකි වෙනත් විධානයක් එකතු කිරීමෙන් වැඩසටහන සැබවින්ම ක්රියාත්මක වූයේ දැයි පරීක්ෂා කළ හැකිය: නිදසුනක් ලෙස,
00 15 * * * /a/command; touch /tmp/a_command_has_run
එම නිසා crond
වේලාව බැලීමෙන් ඔබට ඇත්ත වශයෙන්ම යමක් ක්රියාත්මක වී ඇත්දැයි පරීක්ෂා කළ හැකිය /tmp/a_command_has_run
.
dead.letter
මූල හෝ අදාළ පරිශීලක නිවාස නාමාවලියෙහි ඇති ගොනුවකින් ලබා නොදුන් තැපැල් සොයාගත හැකිය .
ඔබට සෑම විටම රැකියා ප්රතිදානය ලොග් ගොනුවකට පැහැදිලිව යැවිය හැකිය:
0 8 * * * /usr/local/bin/myjob > /var/log/myjob.log 2>&1
මෙය කලින් සඳහන් කළ තැපැල් හැසිරීම ඉක්මවා යනු ඇති බව මතක තබා ගන්න, මන්දයත් ක්රොන්ඩ්ට රැකියාවෙන් කිසිදු ප්රතිදානයක් නොලැබෙන බැවිනි. ඔබට එම හැසිරීම පවත්වා ගැනීමට අවශ්ය නම් ඔබ ටී (1) පිළිබඳව සොයා බැලිය යුතුය.
>>
ඒ වෙනුවට භාවිතා නොකරන්නේ ඇයි >
, එබැවින් ඔබ සෑම විටම ලොග් ගොනුව නැවත ලියන්නේ නැත?
| /usr/bin/logger
ඔබ කැමති වුවද, ස්ටෙෆාන් විසින් දක්ෂ ලෙස යෝජනා කරනු ඇත. ඔබේ වස තෝරන්න: tldp.org/LDP/abs/html/io-redirection.html
myjob.log
අපේක්ෂිත ප්රමාණයෙන් 0 කින් නිර්මාණය කළ නමුත් එය වෙනත් ගොනුවකට ප්රවේශ වී ඇත, මට මෙම සැකසුම වෙනස් කළ හැක්කේ කොතැනින්ද?
ඔබ තැපැල් නොදකිනවා නම්, ඔබ මූලයන් අයාචිත තැපැල් කිරීමක් විය හැකිය. දෝෂ සමඟ ඔබේ සමාගම අධීක්ෂණය සඳහා එම ගිණුම භාවිතා කරන පුද්ගලයින්ට තරමක් කරදරකාරී විය හැකිය. ඒ වෙනුවට ප්රතිදානය Syslog වෙත යැවීමට උත්සාහ කරන්න:
*/5 * * * * yourcronjob 2>&1 | /usr/bin/logger -t yourtag
ඉන්පසු, ක්රොන්ජොබ් ක්රියාත්මක වන තෙක් බලා සිට / var / log / messages (හෝ සමහර පද්ධතිවල /var/log/user.log) හි දෝෂය සොයා බලන්න.
"Yourcronjob: විධානය හමු නොවීය" වැනි පේළි 1-2 ක් පමණක් දිගැති දෝෂ පණිවිඩ සඳහා මෙය ඉතා හොඳය. එය ඔබගේ පවතින සයිස්ලොග් යටිතල ව්යුහය ද භාවිතා කරයි (ලොග්රෝටේෂන්, සෙන්ට්රල් සිස්ලොජිං, ස්ප්ලන්ක්, ආදිය) එය ඊමේල් අයාචිත තැපැල් මූලයට අඩු කරයි.
ඔබේ ක්රොන්ජොබ් සිය ගණනක් නිමැවුම් රේඛා ජනනය කරන්නේ නම් එය හොඳ විසඳුමක් නොවනු ඇත.
crond
රැකියාව ක්රියාත්මක කිරීමට අපොහොසත් වූ විට හෝ රැකියාව අස්ථිර පිටවීමේ කේතයක් ලබා දුන් විට ඔබට ඊමේල් ලැබිය යුතුය . ටයිප් කිරීමට උත්සාහ කරන්න:
$ mailx
විධාන විමසුමේදී.
mailx(1)
සෑම යුනික්ස් වැනි පද්ධතියකම මූලික තැපැල් කියවීමේ වැඩසටහන වේ. එය නවීන ප්රමිතීන්ට අනුව ඉතා ප්රාථමික ය, නමුත් සෑම විටම ලබා ගත හැකි වන පරිදි ඔබට එය විශ්වාස කළ හැකිය. වෙනත්, වඩා හොඳ තැපැල් නියෝජිතයන් ලබා ගත හැකි නමුත්, ඔබ භාවිතා කරන අහඹු යන්ත්රයක ස්ථාපනය කර ඇත්තේ කවරක් දැයි ඔබ නොදන්නා තරම් ඒවා තිබේ.
ඔබ ඔබේ පද්ධතිය අන්තර්ජාල විද්යුත් තැපැල් සේවාදායකයක් ලෙස වින්යාස කර නොමැති නම්, මෙම තැපැල් උප පද්ධතිය භාවිතා වන්නේ යන්ත්රය තුළ පමණක් බව සලකන්න. ඔබට යන්ත්රයේ වෙනත් පරිශීලකයින් වෙත විද්යුත් තැපැල් යැවීමට සහ ලැබීමට හැකිය, නමුත් ඔබට ලෝකයට විද්යුත් තැපැල් යැවීමට නොහැකි විය හැකි අතර බාහිර ලෝකයේ විද්යුත් තැපෑල නිසැකවම ඔබේ යන්ත්රයට පැමිණිය නොහැක.
සුපුරුදු ක්රෝන් වින්යාසය මඟින් ඔබේ වැඩසටහනේ ප්රතිදානය සහිත ලිපියක් එවනු ඇත. මෙය අසමත් වුවහොත්, ඔබේ අසමත් වූ වැඩසටහන ෂෙල් ස්ක්රිප්ට් එකකින් එතීමට උත්සාහ කළ හැකි අතර එමඟින් වැඩසටහන අසමත් නොවන බව සහතික කරයි, තවද ඔබට ප්රතිදානය තවදුරටත් ලොග් කළ හැකිය.
මෙය සමහර ක්රෝන් ක්රියාත්මක කිරීමේදී වින්යාසගත කළ හැකි සැකසුමකි.
ක්රෝන් මූලික තොරතුරු වෙත ලොග් කරයි /var/log/messages
, නමුත් ඕනෑම වැඩසටහන් ප්රතිදානයක් ආයාචනා කරන පරිශීලකයාට තැපැල් කරයි.
/var/log/messages
මගේ උබුන්ටු සර්වර් මත ( 4.4.0-128-generic #154-Ubuntu SMP
). කිසියම් අදහසක් ඇයි? අයිවාට root
මාස ගණනක් තිස්සේ ක්රොන්ටාබ් හි අර්ථ දක්වා ඇති ක්රෝන් රැකියා කිහිපයක් තිබුනි (උදා apt autoremove
), නමුත් කිසිවක් ක්රියාත්මක නොවූ බව පෙනේ.
මීට වසර කිහිපයකට පෙර මම ද එම ගැටළුවට මුහුණ දුන් අතර මෑතකදී රිකාඩෝ විසින් ඉහත සඳහන් කළ අවස්ථාවන්ට විසඳුමක් ලබා ගතිමි. ඊ-තැපෑලක් නොමැතිකම (ඔබ සඳහන් කළ පරිදි) හඳුනා ගැනීම දුෂ්කර වන අතර ඔබේ මූල @ ඔබේ සමාගම් ඊමේල් අයාචිත තැපැල් කිරීමට ඔබට අවශ්ය නැත. උනන්දුවක් දක්වන්නේ නම් deadmanssnitch.com බලන්න. . මෙම මෙවලම ඉහත සඳහන් අවස්ථා විසඳන බව පෙනේ. භාවිතා කිරීම ඉතා සරල බව පෙනේ- මෙවලම ඔබේ ක්රොන්ජොබ් වෙත ලබා දෙන කේතය ටිකක් එකතු කරන්න. ඔබගේ කාර්යය නිශ්චිත අභ්යන්තරයකින් ක්රියාත්මක කිරීමට අපොහොසත් වුවහොත්, ඔබව දැනුවත් කරනු ලැබේ. ඔබ රැකියාව නැවත ක්රියාත්මක වීමට පටන් ගන්නේ නම් ඔබ ද දැනුවත් වනු ඇත.
මම භාවිතා කරමි vixie-cron
, එබැවින් මෙය සෑම දෙයකටම අදාළ වේදැයි මම නොදනිමි. නමුත් මා සතුව dead.letter
ගොනුවක් ඇත.
මගේ /root/
ෆෝල්ඩරයේ මා crons.cron
ධාවනය කර මගේ ක්රොන්ටාබ් ලෙස සකසා ඇත crontab /root/crons.cron
. dead.letter
එසේම නිර්මාණය වනු ඇත /root/
.
සංස්කරණය කරන්න
මම ගූගල් කළ dead.letter
අතර එය ලබා දිය නොහැකි තැපෑලකි . පෙනෙන විදිහට එයට ක්රෝන් සමඟ කිසිදු සම්බන්ධයක් නැත. ඔබට තැපැල් නිවැරදිව සකසා නොමැති නම් (මා වැනි), ඔබට ගොනුව ලැබෙනු ඇත.
තවත් ප්රයෝජනවත් උපක්රමයක් නම් සත්ය වශයෙන්ම ක්රියාත්මක කරන්නේ කුමන ස්ක්රිප්ට් දැයි බැලීමයි.
මෙය සිදු කරනු ලැබේ run-parts -v --test /etc/cron.hourly/
> /etc/cron.hourly//logrotate
ඔබගේ ස්ක්රිප්ට් එක නොපෙන්වන්නේ නම් එය ක්රියාත්මක නොවේ.
මෙම btw ක්රියාත්මක වන්නේ /etc/cron.hourly
නාමාවලියෙහි ස්ථාපනය කර ඇති ස්ක්රිප්ට් සඳහා පමණි . එය ඔබගේ තුළ සකසා ඇති අයිතම පෙන්වන්නේ නැත crontab
.
නවකයින් සඳහා, මෙය නිදොස් කිරීම සඳහා වේදනාවක් විය හැකිය. මිනිත්තුව සහ පැය අගයන් එකිනෙකට හුවමාරු නොකිරීමට වග බලා ගන්න. මිනිත්තුව මුලින්ම පැමිණේ, පසුව පැය. ඔබ එක් එක් සඳහා 12 ට වඩා අඩු අගයන් සපයන විට, එය ඒවා පිළිගනු ඇති නමුත් අපේක්ෂිත පරිදි හෝ කිසිසේත් ක්රියා නොකරනු ඇත.