Առաջադրանքի կարգավիճակը հաջողություն է ասում, մատյանը ցույց է տալիս ավարտված աշխատանք, իսկ տվյալները հնացած են կամ բացակայում են։ Այս համադրությունը սովորաբար նշանակում է, որ պլանավորված առաջադրանքը սկսվել է առանց անհրաժեշտ ուղու, և ներքևում ինչ-որ բան կուլ է տվել ձախողումը։ Ժամանակին գործարկվող ժամանակացույցը ոչինչ չի ասում այն մասին, թե արդյոք ցանցը պատրաստ էր։ Այս երկու փաստերի միջև եղած բացն է այն տեղը, որտեղ ապրում է այս ձախողումը։

Ընդունումը պատկանում է աշխատանքին, ոչ թե cron ֆայլի գոյությանը։

Կանաչ աշխատանքը ավարտված առաջադրանք չէ

Պլանավորիչը նշում է, որ գործընթացը սկսվել է և հետո դուրս եկել՝ նա պատկերացում չունի, թե արդյոք այդ գործընթացը հասել է այն ռեսուրսին, որի համար գոյություն ունի։ Սկրիպտը, որը ձախողված կապը համարում է դատարկ արդյունք, կամ բռնում է սխալը և դուրս գալիս զրոյով, հավերժ առողջ տեսք կունենա։ Ախտանիշը կարմիր կարգավիճակ չէ՝ դա հավանական կարգավիճակ է, որը կապված է բացակայող աշխատանքի հետ։

Անվանեք, թե ինչ է իրականում անհրաժեշտ աշխատանքին, նախքան կորոշեք, թե ինչպես ստուգել այն։ Պահուստային պատճենին կարող է անհրաժեշտ լինել մասնավոր DNS և նույնականացված վերջնակետ, ոչ միայն թունելային գործընթաց։

Ստուգեք կապը, ոչ թե ինտերֆեյսի անունը

tun0 անունով ինտերֆեյսը կարող է գոյություն ունենալ առանց կարևոր նստաշրջանի, և մեկ այլ կապ կարող է տիրել այդ անվանը։ Ստուգեք այն կոնկրետ օբյեկտը, որից կախված է առաջադրանքը՝ մեկ պրոֆիլի ինքնություն, մեկ ծառայության օրինակ կամ ռեսուրսի դեմ փոքր հաստատված գործողություն։ Ստուգումը պահեք ժամանակով սահմանափակված, իսկ հավատարմագրերը՝ գործընթացի արգումենտներից և ախտորոշիչ մատյաններից դուրս։

Սահմանեք նաև անջատված արդյունքը։ Սովորական բացթողումը, կարճ պատուհանում կրկնվող փորձը և օպերատորին տեսանելի բաց թողնված ժամկետը երեք տարբեր պատասխաններ են, և կրկնվող ժամանակացույցը նրանց միջև չի ընտրում։

Բացթողումները և ձախողումները տարբեր արդյունքներ են

[Service]
Type=oneshot
User=worker
ExecCondition=/usr/local/libexec/check-office-path
ExecStart=/usr/local/bin/private-task

systemd տեղակայման մեջ ExecCondition= գործարկում է այդ ստուգիչը աշխատանքային ծանրաբեռնվածությունից առաջ։ Նրա ելքի վարքագիծը հատուկ է՝ զրոն շարունակում է, մեկից 254 կոդերը բաց թողնում են մնացած մեկնարկային հրամանները՝ առանց միավորը ձախողված նշելու, իսկ 255-ը կամ աննորմալ ավարտը ձախողում է այն։ Սա տալիս է երեք տարբեր ազդանշաններ, որոնք օգտակար են միայն այն դեպքում, երբ ստուգիչի պայմանագիրը դիտավորյալ քարտեզագրված է դրանց։ Հաջողությունը վերասահմանող կարգավորումները կարող են փոխել պատկերը, ուստի փաստագրեք քարտեզագրումը։

Բացթողումների գրանցումն է, որ դիզայնը դարձնում է ազնիվ։ Բաց թողնված աշխատանքը, որը ոչ մի տեղ չի երևում, անտարբերելի է հաջողված աշխատանքից, և յուրաքանչյուր ստուգիչի սխալ որպես հանգիստ բացթողում դիտելը անորոշ ժամանակով թաքցնում է կոտրված տեղակայումը։

Պաշտպանեք ամբողջ աշխատանքը, ոչ միայն սկիզբը

Պատրաստության ստուգումը դիտում է աշխարհը գործարկումից առաջ՝ այն հետո չի հսկում ամեն սոքեթ։ Երբ ուղիղ ուղին երբեք ընդունելի չէ այս առաջադրանքի համար, կցեք հաստատված ելքային քաղաքականություն, որը շարունակաբար կիրառվում է և ընդգրկում է DNS-ը, IPv6-ը և թունելի սեփական տրանսպորտը։ Հոսթի գլոբալ IPv6 վիճակը փոխելը առաջադրանքի վրա սահմանափակ քաղաքականության փոխարինող չէ։

Որոշեք՝ արդյոք նոր իրադարձությունը կարող է համընկնել դեռ ընթացող աշխատանքի հետ, այդ կանոնը պահեք աշխատանքային ծանրաբեռնվածության սեփականատիրոջ մոտ, և կրկնվող փորձը դարձրեք անվտանգ տվյալների գործողության համար։ Անջատման պահին առաջադրանքը կանգնեցնելը սահմանափակում է աշխատանքը՝ չերաշխավորելով ոչինչ պահուստային տրաֆիկի մասին։

Ընդունեք աշխատահոսքը երեք դեպքում՝ պատրաստ ուղի, անհասանելի ուղի և կորուստ աշխատանքի ընթացքում։ Ավելի քիչը փորձարկում է ժամանակացույցը, ոչ թե առաջադրանքը։

Առնչվող հոդվածներ