0 10 * * 3 o * 10 * * 3? Llegeix el camp dels minuts
0 10 * * 3 s'executa una vegada; * 10 * * 3 s'executa seixanta vegades en una hora. Llegeix el camp dels minuts, comprova l'ordre dels camps i després espera la disponibilitat en lloc del rellotge.
Totes dues expressions semblen un dimecres al matí, i només una vol dir una vegada. 0 10 * * 3 s'executa a les 10:00 del dimecres; * 10 * * 3 s'executa cada minut de l'hora de les deu, seixanta oportunitats d'iniciar el mateix túnel. Si l'ordre és un llançador que no comprova si ja hi ha una sessió, la segona versió no és un error de planificació, és un bucle que produeix propietaris en competència. Llegeix el camp dels minuts abans de llegir res més.
Els cinc camps són minut, hora, dia del mes, mes i dia de la setmana, en aquest ordre, i un asterisc al primer vol dir cada minut.
El camp dels minuts decideix quantes vegades
El número inicial és el minut, així que 0 10 * * 3 és el primer minut de la desena hora del dimecres. Substituir-lo per un asterisc conserva l'hora i el dia i elimina la propietat d'una sola vegada, cosa que produeix seixanta coincidències. El cron no elimina duplicats: cada coincidència torna a llançar l'ordre. Això no és una subtilesa sobre el cron, és semàntica de camps, i val la pena llegir la referència del planificador instal·lat perquè l'ordre dels camps i la columna opcional de nom d'usuari difereixen entre el crontab d'usuari i el del sistema.
Prova-ho amb una ordre inofensiva que registri la seva pròpia marca de temps durant un dia. Una línia al registre és una planificació; seixanta línies dins d'una hora és una lliçó.
Què fa un segon llançament al primer
Un llançador ben educat nota que la connexió ja està activa i no fa res. Una invocació directa d'openvpn no: crea un altre procés, un altre intent de vincular un dispositiu o un port, i un altre conjunt de rutes que competeixen pels mateixos destins. A NetworkManager, les sol·licituds d'activació repetides per a una connexió solen ser idempotents, i és exactament per això que el problema queda ocult fins que algú fa servir una ordre diferent. La planificació hauria de preguntar al propietari que ja gestiona el túnel.
Després decideix què vol dir una sol·licitud mentre la connexió s'està establint. Ni l'activació duplicada ni una cua d'inicis pendents són òbviament correctes; tria'n una i fes que el llançador la implementi, en lloc de deixar que el planificador decideixi per accident.
Compta els camps abans de l'ordre
Els crontabs d'usuari i de sistema difereixen en si apareix una columna de nom d'usuari abans de l'ordre. Una entrada copiada entre ells o s'executa amb el compte equivocat o passa el nom d'usuari com a primera paraula de l'ordre. Comprova la referència instal·lada en lloc d'una guia, i compta els camps de la teva pròpia línia. Una entrada de cinc camps amb una sisena paraula abans de l'ordre és un crontab de sistema; la mateixa línia en un crontab d'usuari intenta executar aquella paraula com a programa.
La identitat d'execució porta l'entorn amb ella. Una tasca de cron no hereta un anell de claus desbloquejat, un avís interactiu de contrasenya ni el directori de treball on vas provar.
Espera la disponibilitat, no el rellotge
Un llançament correcte no és un túnel que funciona. El client pot estar encara resolent el seu punt final, autenticant-se o instal·lant rutes quan la tasca acaba. Qualsevol tasca dependent hauria d'esperar el recurs protegit que realment necessita, amb un temps d'espera limitat i un error registrat, en lloc d'un nombre fix de segons. Aquesta distinció separa una planificació que funciona la majoria de les vegades d'una que falla en silenci al matí atrafegat.
Si cal una MFA interactiva a aquella hora, la tasca pot demanar l'atenció d'una persona però no pot aportar la resposta. Mantén aquest cas explícit en lloc d'incrustar una contrasenya reutilitzable o reintentar-ho per sempre.
Per a una activació realment puntual, fes servir el mecanisme d'un sol ús compatible. Una regla recurrent que cal recordar i eliminar és un futur llançament duplicat.