0 10 * * 3 ou * 10 * * 3? Le o campo dos minutos
0 10 * * 3 dispárase unha vez; * 10 * * 3 dispárase sesenta veces nunha hora. Le o campo dos minutos, comproba a orde dos campos e despois espera a dispoñibilidade en lugar do reloxo.
As dúas expresións parecen un mércores pola mañá, e só unha delas significa unha vez. 0 10 * * 3 dispárase ás 10:00 do mércores; * 10 * * 3 dispárase cada minuto da hora das dez, sesenta oportunidades de iniciar o mesmo túnel. Se a orde é un lanzador que non comproba se xa existe unha sesión, a segunda versión non é un erro de planificación, é un bucle que produce propietarios en competencia. Le o campo dos minutos antes de ler calquera outra cousa.
Os cinco campos son minuto, hora, día do mes, mes e día da semana, nesa orde, e un asterisco no primeiro significa cada minuto.
O campo dos minutos decide cantas veces
O número inicial é o minuto, así que 0 10 * * 3 é o primeiro minuto da décima hora do mércores. Substituílo por un asterisco conserva a hora e o día e elimina a propiedade de única vez, o que produce sesenta coincidencias. Cron non elimina duplicados: cada coincidencia volve lanzar a orde. Iso non é unha sutileza sobre cron, é semántica de campos, e paga a pena ler a referencia do planificador instalado porque a orde dos campos e a columna opcional de nome de usuario difiren entre o crontab de usuario e o do sistema.
Proba cunha orde inofensiva que rexistre a súa propia marca de tempo durante un día. Unha liña no rexistro é unha planificación; sesenta liñas nunha hora é unha lección.
Que fai un segundo lanzamento co primeiro
Un lanzador ben educado nota que a conexión xa está activa e non fai nada. Unha invocación directa de openvpn non: crea outro proceso, outro intento de ligar un dispositivo ou un porto, e outro conxunto de rutas que compiten polos mesmos destinos. En NetworkManager, as solicitudes de activación repetidas para unha conexión adoitan ser idempotentes, e é exactamente por iso que o problema queda oculto ata que alguén usa unha orde distinta. A planificación debería preguntar ao propietario que xa xestiona o túnel.
Despois decide que significa unha solicitude mentres a conexión se está establecendo. Nin a activación duplicada nin unha cola de inicios pendentes son obviamente correctas; escolle unha e fai que o lanzador a implemente, en lugar de deixar que o planificador decida por accidente.
Conta os campos antes da orde
Os crontab de usuario e de sistema difiren en se aparece unha columna de nome de usuario antes da orde. Unha entrada copiada entre eles ou se executa coa conta equivocada ou pasa o nome de usuario como primeira palabra da orde. Comproba a referencia instalada en lugar dunha guía, e conta os campos da túa propia liña. Unha entrada de cinco campos cunha sexta palabra antes da orde é un crontab de sistema; a mesma liña nun crontab de usuario tenta executar esa palabra como programa.
A identidade de execución leva o ambiente consigo. Un traballo de cron non herda un chaveiro desbloqueado, unha solicitude interactiva de contrasinal nin o directorio de traballo no que probaches.
Espera a dispoñibilidade, non o reloxo
Un lanzamento correcto non é un túnel que funciona. É posible que o cliente aínda estea resolvendo o seu punto final, autenticándose ou instalando rutas cando o traballo remata. Calquera tarefa dependente debería esperar o recurso protexido que realmente necesita, cun tempo de espera limitado e un fallo rexistrado, en lugar dun número fixo de segundos. Esa distinción separa unha planificación que funciona case sempre doutra que falla en silencio na mañá ajetreada.
Se nesa hora se require MFA interactiva, a tarefa pode reclamar a atención dunha persoa pero non pode achegar a resposta. Mantén ese caso explícito en lugar de incrustar un contrasinal reutilizable ou reintentar sen fin.
Para unha activación realmente puntual, usa o mecanismo dun só uso compatible. Unha regra recorrente que hai que lembrar e eliminar é un futuro lanzamento duplicado.