Begge uttrykkene ser ut som en onsdag morgen, og bare ett av dem betyr én gang. 0 10 * * 3 utløses klokken 10:00 på onsdag; * 10 * * 3 utløses i hvert minutt av den tiende timen, seksti sjanser til å starte den samme tunnelen. Hvis kommandoen er en starter som ikke sjekker om det finnes en økt, er den andre versjonen ikke en planleggingsfeil, det er en løkke som skaper konkurrerende eiere. Les minuttfeltet før du leser noe annet.

De fem feltene er minutt, time, dag i måneden, måned og ukedag, i den rekkefølgen, og en stjerne i det første betyr hvert minutt.

Minuttfeltet avgjør hvor mange ganger

Det ledende tallet er minuttet, så 0 10 * * 3 er det første minuttet i den tiende timen på onsdag. Å erstatte det med en stjerne beholder timen og dagen og fjerner egenskapen bare-én-gang, noe som gir seksti treff. Cron fjerner ikke duplikater: hvert treff starter kommandoen på nytt. Det er ingen finurlighet ved cron, det er feltsemantikk, og referansen til den installerte planleggeren er verdt å lese, fordi feltrekkefølgen og den valgfrie brukernavnkolonnen er forskjellig i bruker- og systemcrontab.

Test med en ufarlig kommando som registrerer sitt eget tidsstempel i ett døgn. Én linje i loggen er en plan; seksti linjer innen en time er en lekse.

Hva en andre oppstart gjør med den første

En veloppdragen starter merker at forbindelsen allerede er oppe og gjør ingenting. Et rått openvpn-kall gjør ikke det: det oppretter en ny prosess, et nytt forsøk på å binde en enhet eller en port, og et nytt sett ruter som konkurrerer om de samme destinasjonene. I NetworkManager er gjentatte aktiveringsforespørsler for én forbindelse vanligvis idempotente, og det er nettopp derfor problemet holder seg skjult til noen bruker en annen kommando. Planen bør spørre eieren som allerede administrerer tunnelen.

Bestem deretter hva en forespørsel betyr mens forbindelsen er under oppretting. Verken dobbelaktivering eller en kø av ventende oppstarter er åpenbart riktig; velg én og la starteren implementere det, i stedet for å la planleggeren bestemme ved et uhell.

Tell feltene før kommandoen

Bruker- og systemcrontab er forskjellige i om det står en brukernavnkolonne før kommandoen. En oppføring som kopieres mellom dem, kjører enten under feil konto eller sender brukernavnet som første ord i kommandoen. Sjekk den installerte referansen i stedet for en veiledning, og tell feltene i din egen linje. En oppføring med fem felter og et sjette ord før kommandoen er en systemcrontab; den samme linjen i en brukercrontab prøver å kjøre det ordet som et program.

Utførelsesidentiteten bærer miljøet med seg. En cron-jobb arver ikke en opplåst nøkkelring, en interaktiv passordforespørsel eller arbeidskatalogen du testet i.

Vent på beredskap, ikke på klokken

En vellykket oppstart er ikke en fungerende tunnel. Klienten kan fortsatt løse opp endepunktet sitt, autentisere eller installere ruter når jobben avsluttes. Enhver avhengig oppgave bør vente på den beskyttede ressursen den faktisk trenger, med en begrenset tidsgrense og en logget feil, i stedet for et fast antall sekunder. Den forskjellen skiller en plan som stort sett virker fra en som feiler stille den travle morgenen.

Hvis interaktiv MFA kreves på den timen, kan jobben be om en persons oppmerksomhet, men ikke levere svaret. Hold det tilfellet eksplisitt i stedet for å bygge inn et gjenbrukbart passord eller prøve på nytt i det uendelige.

For en virkelig engangsaktivering, bruk den støttede engangsmekanismen. En tilbakevendende regel som må huskes og fjernes, er en framtidig dobbeltstart.

Relaterte artikler