0 10 * * 3 ili * 10 * * 3? Pročitajte polje za minute
0 10 * * 3 se pokreće jednom; * 10 * * 3 se pokreće šezdeset puta u toku jednog sata. Pročitajte polje za minute, provjerite redoslijed polja, a zatim čekajte spremnost, a ne sat.
Oba izraza izgledaju kao srijeda ujutro, a samo jedan od njih znači jednom. 0 10 * * 3 se pokreće u 10:00 u srijedu; * 10 * * 3 se pokreće svake minute desetog sata, šezdeset šansi da se pokrene isti tunel. Ako je komanda pokretač koji ne provjerava postoji li sesija, druga verzija nije greška u zakazivanju, to je petlja koja stvara konkurentske vlasnike. Pročitajte polje za minute prije nego što pročitate bilo šta drugo.
Pet polja su minuta, sat, dan u mjesecu, mjesec i dan u sedmici, tim redom, a zvjezdica u prvom znači svaku minutu.
Polje za minute odlučuje koliko puta
Vodeći broj je minuta, pa je 0 10 * * 3 prva minuta desetog sata u srijedu. Zamjena zvjezdicom zadržava sat i dan i gubi svojstvo samo-jednom, što daje šezdeset podudaranja. Cron ne uklanja duplikate: svako podudaranje ponovo pokreće komandu. To nije suptilnost o cronu, to je semantika polja, i referencu instaliranog planera vrijedi pročitati jer se redoslijed polja i opcionalna kolona korisničkog imena razlikuju između korisničkog i sistemskog crontaba.
Testirajte bezopasnom komandom koja bilježi vlastiti vremenski pečat tokom jednog dana. Jedan red u dnevniku je raspored; šezdeset redova u roku od sata je lekcija.
Šta drugo pokretanje čini prvom
Dobro odgojen pokretač primijeti da je veza već uspostavljena i ne radi ništa. Sirovi poziv openvpn ne: on stvara još jedan proces, još jedan pokušaj vezivanja uređaja ili porta, i još jedan skup ruta koje se takmiče za iste destinacije. U NetworkManageru su ponovljeni zahtjevi za aktivaciju jedne veze obično idempotentni i upravo zato problem ostaje skriven dok neko ne upotrijebi drugu komandu. Raspored bi trebao pitati vlasnika koji već upravlja tunelom.
Zatim odlučite šta zahtjev znači dok je veza u toku uspostavljanja. Ni duplirana aktivacija ni red čekanja na pokretanje nisu očigledno ispravni; izaberite jedno i natjerajte pokretač da to implementira, umjesto da planer odluči slučajno.
Prebrojte polja prije komande
Korisnički i sistemski crontab razlikuju se po tome pojavljuje li se kolona korisničkog imena prije komande. Unos kopiran između njih ili se izvršava pod pogrešnim računom ili prosljeđuje korisničko ime kao prvu riječ komande. Provjerite instaliranu referencu, a ne vodič, i prebrojte polja u svom redu. Unos s pet polja, ali sa šestom riječi prije komande, sistemski je crontab; isti red u korisničkom crontabu pokušava izvršiti tu riječ kao program.
Identitet izvršavanja nosi okruženje sa sobom. Cron zadatak ne nasljeđuje otključani privjesak ključeva, interaktivni upit za lozinku ni radni direktorij u kojem ste testirali.
Čekajte spremnost, a ne sat
Uspješno pokretanje nije tunel koji radi. Klijent možda još razrješava svoju krajnju točku, provodi autentifikaciju ili instalira rute kada zadatak završi. Svaki zavisni zadatak treba čekati zaštićeni resurs koji mu je zaista potreban, s ograničenim vremenom i zabilježenim neuspjehom, a ne fiksni broj sekundi. Ta razlika odvaja raspored koji uglavnom radi od onog koji tiho zakaže u prometnom jutru.
Ako je u tom satu potrebna interaktivna MFA, zadatak može zatražiti nečiju pažnju, ali ne može dati odgovor. Držite taj slučaj eksplicitnim umjesto da ugrađujete lozinku koja se može ponovo koristiti ili pokušavate zauvijek.
Za istinski jednokratnu aktivaciju koristite podržani mehanizam za jedno izvršavanje. Ponavljajuće pravilo koje se mora zapamtiti i ukloniti buduće je duplirano pokretanje.