0 10 * * 3 nebo * 10 * * 3? Přečtěte si pole minut
0 10 * * 3 se spustí jednou; * 10 * * 3 se spustí šedesátkrát za hodinu. Přečtěte si pole minut, zkontrolujte pořadí polí a pak čekejte na připravenost, ne na hodiny.
Oba výrazy vypadají jako středeční ráno a jen jeden z nich znamená jednou. 0 10 * * 3 se spustí v 10:00 ve středu; * 10 * * 3 se spustí každou minutu desáté hodiny, šedesát šancí spustit stejný tunel. Pokud je příkaz spouštěč, který nekontroluje existující relaci, druhá verze není chyba plánování, je to smyčka, která vytváří konkurující si vlastníky. Přečtěte si pole minut, než přečtete cokoli jiného.
Pět polí je minuta, hodina, den v měsíci, měsíc a den v týdnu, v tomto pořadí, a hvězdička v prvním znamená každou minutu.
Pole minut rozhoduje, kolikrát
Vedoucí číslo je minuta, takže 0 10 * * 3 je první minuta desáté hodiny ve středu. Nahrazení hvězdičkou zachová hodinu a den a ztratí vlastnost pouze-jednou, což vytvoří šedesát shod. Cron duplicity neodstraňuje: každá shoda příkaz znovu spustí. To není jemnost cronu, to je sémantika polí, a vyplatí se přečíst referenci nainstalovaného plánovače, protože pořadí polí a volitelný sloupec uživatelského jména se liší mezi uživatelským a systémovým crontabem.
Otestujte to neškodným příkazem, který si po jeden den zapisuje vlastní časové razítko. Jeden řádek v logu je rozvrh; šedesát řádků během hodiny je lekce.
Co druhé spuštění udělá s prvním
Dobře vychovaný spouštěč si všimne, že spojení už je navázané, a nic nedělá. Surové volání openvpn ne: vytvoří další proces, další pokus navázat zařízení nebo port, a další sadu tras, které soutěží o stejné cíle. V NetworkManageru jsou opakované žádosti o aktivaci jednoho spojení obvykle idempotentní, a právě proto problém zůstává skrytý, dokud někdo nepoužije jiný příkaz. Rozvrh by se měl ptát vlastníka, který tunel už spravuje.
Potom rozhodněte, co žádost znamená, když se spojení právě navazuje. Ani duplicitní aktivace, ani fronta čekajících spuštění nejsou zjevně správné; vyberte jedno a nechte spouštěč, aby to implementoval, místo aby o tom rozhodoval plánovač náhodou.
Spočítejte pole před příkazem
Uživatelský a systémový crontab se liší v tom, zda se před příkazem objevuje sloupec s uživatelským jménem. Záznam zkopírovaný mezi nimi buď běží pod špatným účtem, nebo předá uživatelské jméno jako první slovo příkazu. Zkontrolujte nainstalovanou referenci, ne návod, a spočítejte pole ve vlastním řádku. Záznam s pěti poli a šestým slovem před příkazem je systémový crontab; stejný řádek v uživatelském crontabu se pokusí to slovo spustit jako program.
Identita provádění s sebou nese prostředí. Úloha cronu nedědí odemčenou klíčenku, interaktivní výzvu k zadání hesla ani pracovní adresář, ve kterém jste testovali.
Čekejte na připravenost, ne na hodiny
Úspěšné spuštění není fungující tunel. Klient může ještě překládat svůj koncový bod, autentizovat se nebo instalovat trasy, když úloha skončí. Jakákoli závislá úloha by měla čekat na chráněný prostředek, který skutečně potřebuje, s omezeným časovým limitem a zaznamenaným selháním, místo na pevný počet sekund. Tento rozdíl odděluje rozvrh, který většinou funguje, od toho, který v rušném ránu tiše selže.
Pokud je v tu hodinu vyžadována interaktivní MFA, úloha může požádat člověka o pozornost, ale nemůže poskytnout odpověď. Udržujte tento případ explicitní, místo abyste vkládali znovupoužitelné heslo nebo se snažili navěky.
Pro skutečně jednorázovou aktivaci použijte podporovaný mechanismus jednorázového spuštění. Opakované pravidlo, které je třeba si pamatovat a odstranit, je budoucí duplicitní spuštění.