Oba wyrażenia wyglądają jak środowy poranek, a tylko jedno z nich oznacza jeden raz. 0 10 * * 3 uruchamia się o 10:00 w środę; * 10 * * 3 uruchamia się w każdej minucie dziesiątej godziny, sześćdziesiąt szans na uruchomienie tego samego tunelu. Jeśli polecenie jest launcherm, który nie sprawdza istniejącej sesji, druga wersja nie jest błędem harmonogramu, to pętla tworząca konkurujących właścicieli. Przeczytaj pole minut, zanim przeczytasz cokolwiek innego.

Pięć pól to minuta, godzina, dzień miesiąca, miesiąc i dzień tygodnia, w tej kolejności, a gwiazdka w pierwszym oznacza każdą minutę.

Pole minut decyduje, ile razy

Wiodąca liczba to minuta, więc 0 10 * * 3 to pierwsza minuta dziesiątej godziny w środę. Zastąpienie jej gwiazdką zachowuje godzinę i dzień oraz usuwa właściwość jednorazowości, co daje sześćdziesiąt dopasowań. Cron nie usuwa duplikatów: każde dopasowanie ponownie uruchamia polecenie. To nie jest subtelność dotycząca crona, to semantyka pól, i warto przeczytać dokumentację zainstalowanego harmonogramu, ponieważ kolejność pól i opcjonalna kolumna nazwy użytkownika różnią się między crontabem użytkownika a systemowym.

Przetestuj nieszkodliwym poleceniem, które przez dobę zapisuje własny znacznik czasu. Jedna linia w logu to harmonogram; sześćdziesiąt linii w ciągu godziny to lekcja.

Co drugie uruchomienie robi z pierwszym

Dobrze wychowany launcher zauważa, że połączenie jest już aktywne, i nic nie robi. Surowe wywołanie openvpn nie: tworzy kolejny proces, kolejną próbę zajęcia urządzenia lub portu, i kolejny zestaw tras konkurujących o te same cele. W NetworkManagerze powtarzane żądania aktywacji jednego połączenia są zwykle idempotentne i właśnie dlatego problem pozostaje ukryty, dopóki ktoś nie użyje innego polecenia. Harmonogram powinien pytać właściciela, który już zarządza tunelem.

Następnie zdecyduj, co oznacza żądanie, gdy połączenie jest w trakcie nawiązywania. Ani podwójna aktywacja, ani kolejka oczekujących uruchomień nie są oczywiście poprawne; wybierz jedno i pozwól launcherowi to zaimplementować, zamiast pozwalać harmonogramowi decydować przez przypadek.

Policz pola przed poleceniem

Crontab użytkownika i systemowy różnią się tym, czy przed poleceniem występuje kolumna nazwy użytkownika. Wpis skopiowany między nimi albo działa na niewłaściwym koncie, albo przekazuje nazwę użytkownika jako pierwsze słowo polecenia. Sprawdź zainstalowaną dokumentację, a nie przewodnik, i policz pola we własnej linii. Wpis z pięcioma polami i szóstym słowem przed poleceniem to crontab systemowy; ta sama linia w crontabie użytkownika próbuje wykonać to słowo jako program.

Tożsamość wykonania niesie ze sobą środowisko. Zadanie crona nie dziedziczy odblokowanego pęku kluczy, interaktywnego monitu o hasło ani katalogu roboczego, w którym testowałeś.

Czekaj na gotowość, nie na zegar

Udane uruchomienie to nie działający tunel. Klient może jeszcze rozwiązywać swój punkt końcowy, uwierzytelniać się lub instalować trasy, gdy zadanie się kończy. Każde zadanie zależne powinno czekać na chroniony zasób, którego naprawdę potrzebuje, z ograniczonym limitem czasu i zalogowaną porażką, a nie na stałą liczbę sekund. Ta różnica oddziela harmonogram, który przeważnie działa, od takiego, który zawodzi po cichu w pracowity poranek.

Jeśli o tej godzinie wymagane jest interaktywne MFA, zadanie może poprosić o uwagę człowieka, ale nie może dostarczyć odpowiedzi. Utrzymuj ten przypadek jawnie, zamiast wbudowywać hasło wielokrotnego użytku lub ponawiać w nieskończoność.

Dla naprawdę jednorazowej aktywacji użyj obsługiwanego mechanizmu jednorazowego. Powtarzająca się reguła, którą trzeba pamiętać i usunąć, to przyszłe podwójne uruchomienie.

Powiązane artykuły