0 10 * * 3 ar * 10 * * 3? Skaitykite minučių lauką
0 10 * * 3 suveikia vieną kartą; * 10 * * 3 suveikia šešiasdešimt kartų per valandą. Skaitykite minučių lauką, patikrinkite laukų tvarką, tada lukterėkite pasirengimo, o ne laikrodžio.
Abu reiškiniai atrodo kaip trečiadienio rytas, ir tik vienas jų reiškia vieną kartą. 0 10 * * 3 suveikia trečiadienį 10:00; * 10 * * 3 suveikia kiekvieną dešimtos valandos minutę, šešiasdešimt galimybių paleisti tą patį tunelį. Jei komanda yra paleidėjas, kuris netikrina esamos sesijos, antroji versija nėra planavimo klaida, tai ciklas, kuriantis konkuruojančius savininkus. Skaitykite minučių lauką prieš ką nors kita.
Penki laukai yra minutė, valanda, mėnesio diena, mėnuo ir savaitės diena, tokia tvarka, o žvaigždutė pirmame reiškia kiekvieną minutę.
Minučių laukas nusprendžia, kiek kartų
Pirmasis skaičius yra minutė, todėl 0 10 * * 3 yra pirmoji dešimtos valandos minutė trečiadienį. Pakeitus jį žvaigždute, valanda ir diena išlieka, o savybė tik-vieną-kartą prarandama, todėl gaunama šešiasdešimt atitikmenų. Cron nešalina dublikatų: kiekvienas atitikmuo vėl paleidžia komandą. Tai ne cron subtilybė, tai laukų semantika, ir verta perskaityti įdiegto planuoklio žinyną, nes laukų tvarka ir neprivalomas vartotojo vardo stulpelis skiriasi vartotojo ir sistemos crontab.
Išbandykite nekenksminga komanda, kuri per dieną įrašo savo laiko žymą. Viena eilutė žurnale yra grafikas; šešiasdešimt eilučių per valandą yra pamoka.
Ką antras paleidimas daro pirmajam
Gerai išauklėtas paleidėjas pastebi, kad ryšys jau aktyvus, ir nieko nedaro. Neapdorotas openvpn iškvietimas ne: jis sukuria dar vieną procesą, dar vieną bandymą susieti įrenginį ar prievadą, ir dar vieną maršrutų rinkinį, konkuruojantį dėl tų pačių paskirčių. NetworkManager atveju pakartotiniai vienos jungties aktyvavimo prašymai paprastai yra idempotentiški, ir būtent todėl problema lieka paslėpta, kol kas nors nepanaudoja kitos komandos. Grafikas turėtų klausti savininko, kuris jau valdo tunelį.
Tada nuspręskite, ką prašymas reiškia, kol jungtis kuriama. Nei dvigubas aktyvavimas, nei laukiančių paleidimų eilė nėra akivaizdžiai teisingi; pasirinkite vieną ir leiskite paleidėjui tai įgyvendinti, o ne leiskite planuokliui nuspręsti atsitiktinai.
Suskaičiuokite laukus prieš komandą
Vartotojo ir sistemos crontab skiriasi tuo, ar prieš komandą atsiranda vartotojo vardo stulpelis. Tarp jų nukopijuotas įrašas arba vykdomas su netinkama paskyra, arba perduoda vartotojo vardą kaip pirmąjį komandos žodį. Tikrinkite įdiegtą žinyną, o ne gidą, ir suskaičiuokite laukus savo eilutėje. Įrašas su penkiais laukais ir šeštuoju žodžiu prieš komandą yra sistemos crontab; ta pati eilutė vartotojo crontab bando vykdyti tą žodį kaip programą.
Vykdymo tapatybė nešasi aplinką. Cron užduotis nepaveldi atrakinto raktų rinkinio, interaktyvaus slaptažodžio užklausos ar darbinio katalogo, kuriame testavote.
Lauktite pasirengimo, o ne laikrodžio
Sėkmingas paleidimas dar nėra veikiantis tunelis. Klientas gali dar spręsti savo galinį tašką, autentifikuotis ar diegti maršrutus, kai užduotis jau baigiasi. Bet kuri priklausoma užduotis turėtų laukti saugomo resurso, kurio jai iš tikrųjų reikia, su ribotu laiku ir užregistruota nesėkme, o ne fiksuoto sekundžių skaičiaus. Šis skirtumas atskiria grafiką, kuris dažniausiai veikia, nuo to, kuris tyliai sugenda užimtą rytą.
Jei tą valandą reikalinga interaktyvi MFA, užduotis gali paprašyti žmogaus dėmesio, bet negali pateikti atsakymo. Laikykite šį atvejį aiškų, o ne įterpkite daugkartinį slaptažodį ar bandykite be galo.
Tikrai vienkartiniam aktyvavimui naudokite palaikomą vienkartinį mechanizmą. Pasikartojanti taisyklė, kurią reikia atsiminti ir pašalinti, yra būsimas dvigubas paleidimas.