ක්‍රෝන් දෝෂ සටහන් වී ඇත්තේ කොහේද?


182

මම cronවැරදි ලෙස රැකියා සැකසුවහොත් ඒවා නිහ ly ව අසමත් වන බවක් පෙනේ. වැරැද්ද කුමක්දැයි වටහා ගැනීමට මම වැරදි ලොගයක් සෙවිය යුත්තේ කොතැනින්ද?

Answers:


117

අනෙක් අය පෙන්වා දී ඇති පරිදි, cronඑය ක්‍රියාත්මක වන ඕනෑම වැඩසටහනක ප්‍රතිදානය ඔබට විද්‍යුත් තැපැල් කරනු ඇත (කිසියම් ප්‍රතිදානයක් තිබේ නම්). එබැවින්, ඔබට කිසිදු ප්‍රතිදානයක් නොලැබුනේ නම්, මූලික වශයෙන් හැකියාවන් තුනක් ඇත:

  1. crond වැඩසටහන ක්‍රියාත්මක කිරීම හෝ විද්‍යුත් තැපෑල යැවීම සඳහා කවචයක් ආරම්භ කිරීමට පවා නොහැකි විය
  2. crond ප්‍රතිදානය තැපැල් කිරීමේදී කරදර ඇති විය, නැතහොත් තැපෑල නැති විය.
  3. වැඩසටහන මඟින් කිසිදු ප්‍රතිදානයක් (දෝෂ පණිවිඩ ඇතුළුව) නිපදවා නැත

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.


3
මෙම "ඊමේල්" ගොනුවක ද තිබේද? මම හවුල් වෙබ් සත්කාරකත්වය භාවිතා කරන අතර ඔවුන් මට විද්‍යුත් තැපැල් කළ යුත්තේ කොහෙන්දැයි ඔවුන් නොසිතනු ඇත.
නේතන් ලෝන්ග්

3
විධානය පවා ක්‍රියාත්මක වේදැයි පරීක්ෂා කිරීම සඳහා 3 වන අවස්ථාවෙහි ඇති උපදෙස් මම අගය කරමි. මගේ නඩුවේදී, ක්‍රෝන් මගේ රැකියාව කරගෙන නොගිය නිසා මම මෑතකදී සේවාදායකයාගේ කාල කලාපය වෙනස් කර ඇති අතර ක්‍රෝන් සේවාදායකය නැවත ආරම්භ කිරීමට අවශ්‍ය වූ නිසා එය නියමිත කාල කලාපයේ ක්‍රෝන් වේලාවන් ඇගයීමට ලක් කරනු ඇත.
නේතන්

1
ඔබගේ තැපැල් හුවමාරු නියෝජිතයා මත පදනම්ව, ඔබට dead.letterමූල හෝ අදාළ පරිශීලක නිවාස නාමාවලියෙහි ඇති ගොනුවකින් ලබා නොදුන් තැපැල් සොයාගත හැකිය .
ඩාරියෝ සීඩ්ල්

55

ඔබට සෑම විටම රැකියා ප්‍රතිදානය ලොග් ගොනුවකට පැහැදිලිව යැවිය හැකිය:

0 8 * * * /usr/local/bin/myjob > /var/log/myjob.log 2>&1

මෙය කලින් සඳහන් කළ තැපැල් හැසිරීම ඉක්මවා යනු ඇති බව මතක තබා ගන්න, මන්දයත් ක්‍රොන්ඩ්ට රැකියාවෙන් කිසිදු ප්‍රතිදානයක් නොලැබෙන බැවිනි. ඔබට එම හැසිරීම පවත්වා ගැනීමට අවශ්‍ය නම් ඔබ ටී (1) පිළිබඳව සොයා බැලිය යුතුය.


13
>>ඒ වෙනුවට භාවිතා නොකරන්නේ ඇයි >, එබැවින් ඔබ සෑම විටම ලොග් ගොනුව නැවත ලියන්නේ නැත?
ක්‍රිස්

ෂුවර්! ඕනෑම ආකාරයක I / O යළි හරවා යැවීමක්, | /usr/bin/loggerඔබ කැමති වුවද, ස්ටෙෆාන් විසින් දක්ෂ ලෙස යෝජනා කරනු ඇත. ඔබේ වස තෝරන්න: tldp.org/LDP/abs/html/io-redirection.html
codehead

cron මෙම ලොග් ගොනුව myjob.logඅපේක්ෂිත ප්‍රමාණයෙන් 0 කින් නිර්මාණය කළ නමුත් එය වෙනත් ගොනුවකට ප්‍රවේශ වී ඇත, මට මෙම සැකසුම වෙනස් කළ හැක්කේ කොතැනින්ද?
ගණකාධිකාරී م

44

ඔබ තැපැල් නොදකිනවා නම්, ඔබ මූලයන් අයාචිත තැපැල් කිරීමක් විය හැකිය. දෝෂ සමඟ ඔබේ සමාගම අධීක්ෂණය සඳහා එම ගිණුම භාවිතා කරන පුද්ගලයින්ට තරමක් කරදරකාරී විය හැකිය. ඒ වෙනුවට ප්‍රතිදානය Syslog වෙත යැවීමට උත්සාහ කරන්න:

*/5 * * * * yourcronjob 2>&1 | /usr/bin/logger -t yourtag

ඉන්පසු, ක්‍රොන්ජොබ් ක්‍රියාත්මක වන තෙක් බලා සිට / var / log / messages (හෝ සමහර පද්ධතිවල /var/log/user.log) හි දෝෂය සොයා බලන්න.

"Yourcronjob: විධානය හමු නොවීය" වැනි පේළි 1-2 ක් පමණක් දිගැති දෝෂ පණිවිඩ සඳහා මෙය ඉතා හොඳය. එය ඔබගේ පවතින සයිස්ලොග් යටිතල ව්‍යුහය ද භාවිතා කරයි (ලොග්‍රෝටේෂන්, සෙන්ට්‍රල් සිස්ලොජිං, ස්ප්ලන්ක්, ආදිය) එය ඊමේල් අයාචිත තැපැල් මූලයට අඩු කරයි.

ඔබේ ක්‍රොන්ජොබ් සිය ගණනක් නිමැවුම් රේඛා ජනනය කරන්නේ නම් එය හොඳ විසඳුමක් නොවනු ඇත.


8

crondරැකියාව ක්‍රියාත්මක කිරීමට අපොහොසත් වූ විට හෝ රැකියාව අස්ථිර පිටවීමේ කේතයක් ලබා දුන් විට ඔබට ඊමේල් ලැබිය යුතුය . ටයිප් කිරීමට උත්සාහ කරන්න:

$ mailx

විධාන විමසුමේදී.

mailx(1)සෑම යුනික්ස් වැනි පද්ධතියකම මූලික තැපැල් කියවීමේ වැඩසටහන වේ. එය නවීන ප්‍රමිතීන්ට අනුව ඉතා ප්‍රාථමික ය, නමුත් සෑම විටම ලබා ගත හැකි වන පරිදි ඔබට එය විශ්වාස කළ හැකිය. වෙනත්, වඩා හොඳ තැපැල් නියෝජිතයන් ලබා ගත හැකි නමුත්, ඔබ භාවිතා කරන අහඹු යන්ත්‍රයක ස්ථාපනය කර ඇත්තේ කවරක් දැයි ඔබ නොදන්නා තරම් ඒවා තිබේ.

ඔබ ඔබේ පද්ධතිය අන්තර්ජාල විද්‍යුත් තැපැල් සේවාදායකයක් ලෙස වින්‍යාස කර නොමැති නම්, මෙම තැපැල් උප පද්ධතිය භාවිතා වන්නේ යන්ත්‍රය තුළ පමණක් බව සලකන්න. ඔබට යන්ත්‍රයේ වෙනත් පරිශීලකයින් වෙත විද්‍යුත් තැපැල් යැවීමට සහ ලැබීමට හැකිය, නමුත් ඔබට ලෝකයට විද්‍යුත් තැපැල් යැවීමට නොහැකි විය හැකි අතර බාහිර ලෝකයේ විද්‍යුත් තැපෑල නිසැකවම ඔබේ යන්ත්‍රයට පැමිණිය නොහැක.


8

සුපුරුදු ක්‍රෝන් වින්‍යාසය මඟින් ඔබේ වැඩසටහනේ ප්‍රතිදානය සහිත ලිපියක් එවනු ඇත. මෙය අසමත් වුවහොත්, ඔබේ අසමත් වූ වැඩසටහන ෂෙල් ස්ක්‍රිප්ට් එකකින් එතීමට උත්සාහ කළ හැකි අතර එමඟින් වැඩසටහන අසමත් නොවන බව සහතික කරයි, තවද ඔබට ප්‍රතිදානය තවදුරටත් ලොග් කළ හැකිය.

මෙය සමහර ක්‍රෝන් ක්‍රියාත්මක කිරීමේදී වින්‍යාසගත කළ හැකි සැකසුමකි.


5

ක්‍රෝන් මූලික තොරතුරු වෙත ලොග් කරයි /var/log/messages, නමුත් ඕනෑම වැඩසටහන් ප්‍රතිදානයක් ආයාචනා කරන පරිශීලකයාට තැපැල් කරයි.


2
කිසිදු තියෙනවා /var/log/messagesමගේ උබුන්ටු සර්වර් මත ( 4.4.0-128-generic #154-Ubuntu SMP). කිසියම් අදහසක් ඇයි? අයිවාට rootමාස ගණනක් තිස්සේ ක්‍රොන්ටාබ් හි අර්ථ දක්වා ඇති ක්‍රෝන් රැකියා කිහිපයක් තිබුනි (උදා apt autoremove), නමුත් කිසිවක් ක්‍රියාත්මක නොවූ බව පෙනේ.
ඩෑන් ඩස්කල්ස්කු

2

මීට වසර කිහිපයකට පෙර මම ද එම ගැටළුවට මුහුණ දුන් අතර මෑතකදී රිකාඩෝ විසින් ඉහත සඳහන් කළ අවස්ථාවන්ට විසඳුමක් ලබා ගතිමි. ඊ-තැපෑලක් නොමැතිකම (ඔබ සඳහන් කළ පරිදි) හඳුනා ගැනීම දුෂ්කර වන අතර ඔබේ මූල @ ඔබේ සමාගම් ඊමේල් අයාචිත තැපැල් කිරීමට ඔබට අවශ්‍ය නැත. උනන්දුවක් දක්වන්නේ නම් deadmanssnitch.com බලන්න. . මෙම මෙවලම ඉහත සඳහන් අවස්ථා විසඳන බව පෙනේ. භාවිතා කිරීම ඉතා සරල බව පෙනේ- මෙවලම ඔබේ ක්‍රොන්ජොබ් වෙත ලබා දෙන කේතය ටිකක් එකතු කරන්න. ඔබගේ කාර්යය නිශ්චිත අභ්‍යන්තරයකින් ක්‍රියාත්මක කිරීමට අපොහොසත් වුවහොත්, ඔබව දැනුවත් කරනු ලැබේ. ඔබ රැකියාව නැවත ක්‍රියාත්මක වීමට පටන් ගන්නේ නම් ඔබ ද දැනුවත් වනු ඇත.


1

මම භාවිතා කරමි vixie-cron, එබැවින් මෙය සෑම දෙයකටම අදාළ වේදැයි මම නොදනිමි. නමුත් මා සතුව dead.letterගොනුවක් ඇත.

මගේ /root/ෆෝල්ඩරයේ මා crons.cronධාවනය කර මගේ ක්‍රොන්ටාබ් ලෙස සකසා ඇත crontab /root/crons.cron. dead.letterඑසේම නිර්මාණය වනු ඇත /root/.

සංස්කරණය කරන්න මම ගූගල් කළ dead.letterඅතර එය ලබා දිය නොහැකි තැපෑලකි . පෙනෙන විදිහට එයට ක්‍රෝන් සමඟ කිසිදු සම්බන්ධයක් නැත. ඔබට තැපැල් නිවැරදිව සකසා නොමැති නම් (මා වැනි), ඔබට ගොනුව ලැබෙනු ඇත.


1

තවත් ප්‍රයෝජනවත් උපක්‍රමයක් නම් සත්‍ය වශයෙන්ම ක්‍රියාත්මක කරන්නේ කුමන ස්ක්‍රිප්ට් දැයි බැලීමයි.

මෙය සිදු කරනු ලැබේ run-parts -v --test /etc/cron.hourly/

> /etc/cron.hourly//logrotate

ඔබගේ ස්ක්‍රිප්ට් එක නොපෙන්වන්නේ නම් එය ක්‍රියාත්මක නොවේ.

මෙම btw ක්‍රියාත්මක වන්නේ /etc/cron.hourlyනාමාවලියෙහි ස්ථාපනය කර ඇති ස්ක්‍රිප්ට් සඳහා පමණි . එය ඔබගේ තුළ සකසා ඇති අයිතම පෙන්වන්නේ නැත crontab.


0

නවකයින් සඳහා, මෙය නිදොස් කිරීම සඳහා වේදනාවක් විය හැකිය. මිනිත්තුව සහ පැය අගයන් එකිනෙකට හුවමාරු නොකිරීමට වග බලා ගන්න. මිනිත්තුව මුලින්ම පැමිණේ, පසුව පැය. ඔබ එක් එක් සඳහා 12 ට වඩා අඩු අගයන් සපයන විට, එය ඒවා පිළිගනු ඇති නමුත් අපේක්ෂිත පරිදි හෝ කිසිසේත් ක්‍රියා නොකරනු ඇත.


3
ඔබ හරි, නමුත් මට විශ්වාස නෑ මේක ඇත්තටම ප්‍රශ්නයට උත්තර දෙනවා කියලා.
රෝයිමා
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.