0 10 * * 3 или * 10 * * 3? Прочитајте го полето за минути
0 10 * * 3 се активира еднаш; * 10 * * 3 се активира шеесет пати во еден час. Прочитајте го полето за минути, проверете го редоследот на полињата и потоа почекајте подготвеност наместо часовникот.
Двата израза изгледаат како среда наутро, а само едниот од нив значи еднаш. 0 10 * * 3 се активира во 10:00 во среда; * 10 * * 3 се активира секоја минута од десеттиот час, шеесет шанси да се стартува истиот тунел. Ако командата е стартер што не проверува постоечка сесија, втората верзија не е грешка во распоредот, туку јамка што создава конкурентни сопственици. Прочитајте го полето за минути пред да прочитате било што друго.
Петте полиња се минута, час, ден во месецот, месец и ден во неделата, по тој редослед, а ѕвездичка во првото значи секоја минута.
Полето за минути одлучува колку пати
Почетниот број е минутата, па 0 10 * * 3 е првата минута од десеттиот час во среда. Замената со ѕвездичка го задржува часот и денот и ја губи особината само-еднаш, што дава шеесет совпаѓања. Cron не отстранува дупликати: секое совпаѓање повторно ја стартува командата. Тоа не е ситница за cron, тоа е семантика на полиња, и вреди да се прочита референцата на инсталираниот планер, бидејќи редоследот на полињата и опционалната колона со корисничко име се разликуваат меѓу кориснички и системски crontab.
Тестирајте со безопасна команда што го запишува сопствениот временски печат еден ден. Една линија во дневникот е распоред; шеесет линии во еден час е лекција.
Што прави второто стартување со првото
Добро воспитан стартер забележува дека врската веќе е активна и не прави ништо. Суровиот повик на openvpn не: создава друг процес, уште еден обид да се врзе уред или порта, и уште еден сет рути што се натпреваруваат за истите одредишта. Во NetworkManager, повторените барања за активирање на една врска обично се идемпотентни, и токму затоа проблемот останува скриен додека некој не употреби друга команда. Распоредот треба да го праша сопственикот што веќе управува со тунелот.
Потоа одлучете што значи барањето додека врската се воспоставува. Ниту двојното активирање ниту редот на чекачки стартувања не се очигледно точни; изберете едно и натерајте го стартерот да го имплементира, наместо планерот да одлучи случајно.
Избројте ги полињата пред командата
Корисничкиот и системскиот crontab се разликуваат по тоа дали пред командата се појавува колона со корисничко име. Запис копиран меѓу нив или се извршува со погрешна сметка или го предава корисничкото име како прв збор од командата. Проверете ја инсталираната референца, а не водич, и избројте ги полињата во вашиот сопствен ред. Запис со пет полиња и шести збор пред командата е системски crontab; истиот ред во кориснички crontab се обидува да го изврши тој збор како програма.
Идентитетот на извршување ја носи околината со себе. Cron задачата не наследува отклучен приврзок со клучеви, интерактивно барање лозинка или работниот директориум во кој тестиравте.
Почекајте подготвеност, а не часовник
Успешното стартување не е тунел што работи. Клиентот може сè уште да ја решава својата крајна точка, да се автентицира или да инсталира рути кога задачата завршува. Секоја зависна задача треба да го чека заштитениот ресурс што навистина ѝ е потребен, со ограничено време и запишан неуспех, наместо фиксен број секунди. Таа разлика го одделува распоредот што главно работи од оној што тивко пропаѓа во зафатеното утро.
Ако во тој час е потребна интерактивна MFA, задачата може да побара внимание од човек, но не може да го даде одговорот. Држете го тој случај експлицитен наместо да вградите лозинка што може повторно да се употреби или да обидувате засекогаш.
За навистина еднократно активирање, користете го поддржаниот механизам за едно извршување. Повторливо правило што треба да се запомни и отстрани е идно двојно стартување.