0 10 * * 3 alebo * 10 * * 3? Prečítajte si pole minút
0 10 * * 3 sa spustí raz; * 10 * * 3 sa spustí šesťdesiatkrát za hodinu. Prečítajte si pole minút, skontrolujte poradie polí a potom čakajte na pripravenosť, nie na hodiny.
Oba výrazy vyzerajú ako stredajšie ráno a iba jeden z nich znamená raz. 0 10 * * 3 sa spustí o 10:00 v stredu; * 10 * * 3 sa spustí v každej minúte desiatej hodiny, šesťdesiat šancí spustiť ten istý tunel. Ak je príkaz spúšťač, ktorý nekontroluje existujúcu reláciu, druhá verzia nie je chyba plánovania, je to slučka, ktorá vytvára konkurujúcich vlastníkov. Prečítajte si pole minút skôr, než prečítate čokoľvek iné.
Päť polí je minúta, hodina, deň v mesiaci, mesiac a deň v týždni, v tomto poradí, a hviezdička v prvom znamená každú minútu.
Pole minút rozhoduje, koľkokrát
Vedúce číslo je minúta, takže 0 10 * * 3 je prvá minúta desiatej hodiny v stredu. Nahradenie hviezdičkou zachová hodinu a deň a stratí vlastnosť iba-jedenkrát, čo vytvorí šesťdesiat zhôd. Cron duplikáty neodstraňuje: každá zhoda príkaz znova spustí. To nie je jemnosť cronu, to je sémantika polí, a oplatí sa prečítať referenciu nainštalovaného plánovača, pretože poradie polí a voliteľný stĺpec používateľského mena sa líšia medzi používateľským a systémovým crontabom.
Otestujte neškodným príkazom, ktorý si celý deň zapisuje vlastnú časovú pečiatku. Jeden riadok v logu je rozvrh; šesťdesiat riadkov za hodinu je lekcia.
Čo druhé spustenie robí s prvým
Dobre vychovaný spúšťač si všimne, že spojenie je už nadviazané, a nič nerobí. Surové volanie openvpn nie: vytvorí ďalší proces, ďalší pokus naviazať zariadenie alebo port, a ďalšiu sadu trás, ktoré súťažia o tie isté ciele. V NetworkManageri sú opakované žiadosti o aktiváciu jedného spojenia zvyčajne idempotentné, a práve preto problém zostáva skrytý, kým niekto nepoužije iný príkaz. Rozvrh by sa mal opýtať vlastníka, ktorý tunel už spravuje.
Potom rozhodnite, čo žiadosť znamená, keď sa spojenie práve nadväzuje. Ani dvojitá aktivácia, ani front čakajúcich spustení nie sú zjavne správne; vyberte jedno a nechajte spúšťač, aby to implementoval, namiesto toho, aby o tom rozhodoval plánovač náhodou.
Spočítajte polia pred príkazom
Používateľský a systémový crontab sa líšia v tom, či sa pred príkazom objavuje stĺpec s používateľským menom. Záznam skopírovaný medzi nimi buď beží pod nesprávnym účtom, alebo odovzdáva používateľské meno ako prvé slovo príkazu. Skontrolujte nainštalovanú referenciu, nie návod, a spočítajte polia vo vlastnom riadku. Záznam s piatimi poľami a šiestym slovom pred príkazom je systémový crontab; ten istý riadok v používateľskom crontabe sa pokúša spustiť to slovo ako program.
Identita vykonávania so sebou nesie prostredie. Úloha cronu nededia odomknutú kľúčenku, interaktívnu výzvu na zadanie hesla ani pracovný adresár, v ktorom ste testovali.
Čakajte na pripravenosť, nie na hodiny
Úspešné spustenie nie je fungujúci tunel. Klient môže ešte stále prekladať svoj koncový bod, autentizovať sa alebo inštalovať trasy, keď úloha končí. Akákoľvek závislá úloha by mala čakať na chránený prostriedok, ktorý skutočne potrebuje, s obmedzeným časovým limitom a zaznamenaným zlyhaním, namiesto pevného počtu sekúnd. Tento rozdiel oddeľuje rozvrh, ktorý väčšinou funguje, od toho, ktorý v rušnom ráne ticho zlyhá.
Ak sa v tej hodine vyžaduje interaktívna MFA, úloha môže požiadať človeka o pozornosť, ale nemôže poskytnúť odpoveď. Udržujte tento prípad explicitný, namiesto vkladania opakovane použiteľného hesla alebo nekonečného opakovania.
Pre skutočne jednorazovú aktiváciu použite podporovaný jednorazový mechanizmus. Opakované pravidlo, ktoré si treba zapamätať a odstrániť, je budúce dvojité spustenie.