Båda uttrycken ser ut som en onsdagsmorgon, och bara ett av dem betyder en gång. 0 10 * * 3 utlöses klockan 10:00 på onsdagen; * 10 * * 3 utlöses varje minut under den tionde timmen, sextio chanser att starta samma tunnel. Om kommandot är en startare som inte kontrollerar om det redan finns en session, är den andra versionen inte ett schemaläggningsfel, det är en slinga som skapar konkurrerande ägare. Läs minutfältet innan du läser något annat.

De fem fälten är minut, timme, dag i månaden, månad och veckodag, i den ordningen, och en stjärna i det första betyder varje minut.

Minutfältet avgör hur många gånger

Den inledande siffran är minuten, så 0 10 * * 3 är den första minuten under den tionde timmen på onsdagen. Att ersätta den med en stjärna behåller timmen och dagen och tar bort egenskapen endast-en-gång, vilket ger sextio träffar. Cron tar inte bort dubbletter: varje träff startar kommandot igen. Det är ingen finess om cron, det är fältsemantik, och referensen för den installerade schemaläggaren är värd att läsa, eftersom fältordningen och den valfria kolumnen för användarnamn skiljer sig mellan användar- och systemcrontab.

Testa med ett ofarligt kommando som registrerar sin egen tidsstämpel under ett dygn. En rad i loggen är ett schema; sextio rader inom en timme är en läxa.

Vad en andra start gör med den första

En väluppfostrad startare märker att anslutningen redan är uppe och gör ingenting. Ett rått openvpn-anrop gör inte det: det skapar en ny process, ett nytt försök att binda en enhet eller en port, och en ny uppsättning rutter som konkurrerar om samma destinationer. I NetworkManager är upprepade aktiveringsförfrågningar för en anslutning oftast idempotenta, och det är just därför problemet förblir dolt tills någon använder ett annat kommando. Schemat bör fråga ägaren som redan hanterar tunneln.

Bestäm sedan vad en förfrågan betyder medan anslutningen upprättas. Varken dubbelaktivering eller en kö av väntande starter är uppenbart rätt; välj en och låt startaren implementera det, i stället för att låta schemaläggaren avgöra av misstag.

Räkna fälten före kommandot

Användar- och systemcrontab skiljer sig åt när det gäller om en kolumn för användarnamn står före kommandot. En post som kopieras mellan dem körs antingen under fel konto eller skickar användarnamnet som kommandots första ord. Kontrollera den installerade referensen i stället för en guide, och räkna fälten i din egen rad. En post med fem fält och ett sjätte ord före kommandot är en systemcrontab; samma rad i en användarcrontab försöker köra det ordet som ett program.

Utförandeidentiteten bär miljön med sig. En cron-jobb ärver inte en upplåst nyckelring, en interaktiv lösenordsfråga eller arbetskatalogen du testade i.

Vänta på beredskap, inte på klockan

En lyckad start är inte en fungerande tunnel. Klienten kan fortfarande lösa upp sin slutpunkt, autentisera eller installera rutter när jobbet avslutas. Varje beroende uppgift bör vänta på den skyddade resurs den faktiskt behöver, med en begränsad tidsgräns och ett loggat fel, i stället för ett fast antal sekunder. Den skillnaden skiljer ett schema som oftast fungerar från ett som misslyckas tyst den stressiga morgonen.

Om interaktiv MFA krävs under den timmen kan jobbet be om en persons uppmärksamhet men inte leverera svaret. Håll det fallet explicit i stället för att bädda in ett återanvändbart lösenord eller försöka igen i oändlighet.

För en verkligt engångsaktivering, använd den stödda engångsmekanismen. En återkommande regel som måste kommas ihåg och tas bort är en framtida dubbelstart.

Relaterade artiklar