Абодва выразы выглядаюць як раніца серады, і толькі адзін з іх азначае адзін раз. 0 10 * * 3 запускаецца а 10:00 у сераду; * 10 * * 3 запускаецца кожную хвіліну дзесятай гадзіны, шэсцьдзясят шанцаў запусціць той самы тунэль. Калі каманда гэта запускальнік, які не правярае наяўную сесію, другая версія не памылка планавання, а цыкл, які стварае канкуруючых уладальнікаў. Чытайце поле хвілін, перш чым чытаць што-небудзь яшчэ.

Пяць палёў гэта хвіліна, гадзіна, дзень месяца, месяц і дзень тыдня, менавіта ў такім парадку, і зорка ў першым полі азначае кожную хвіліну.

Поле хвілін вырашае, колькі разоў

Першы лік гэта хвіліна, таму 0 10 * * 3 першая хвіліна дзясятай гадзіны ў сераду. Замена яго на зорку захоўвае гадзіну і дзень і пазбаўляе ўласцівасці «толькі адзін раз», што дае шэсцьдзясят супадзенняў. Cron не выдаляе паўторы: кожнае супадзенне запускае каманду зноў. Гэта не тонкасць пра cron, гэта семантыка палёў, і даведку ўстаноўленага планавальніка варта прачытаць, бо парадак палёў і неабавязковы слупок імя карыстальніка адрозніваюцца ў crontab карыстальніка і сістэмным crontab.

Праверце бясшкоднай камандай, якая запісвае ўласную адзнаку часу на працягу дня. Адзін радок у журнале гэта расклад; шэсцьдзясят радкоў за гадзіну гэта ўрок.

Што другі запуск робіць з першым

Добра выхаваны запускальнік заўважае, што злучэнне ўжо ўсталявана, і нічога не робіць. Сыры выклік openvpn не: ён стварае яшчэ адзін працэс, яшчэ адну спробу прывязаць прыладу або порт, і яшчэ адзін набор маршрутаў, якія канкуруюць за тыя ж пункты прызначэння. У NetworkManager паўторныя запыты актывацыі для аднаго злучэння звычайна ідэмпатэнтныя, і менавіта таму праблема застаецца схаванай, пакуль хтосьці не скарыстаецца іншай камандай. Расклад павінен звяртацца да ўладальніка, які ўжо кіруе тунэлем.

Затым вырашыце, што азначае запыт, пакуль злучэнне ў працэсе ўсталявання. Ні паўторная актывацыя, ні чарга чакаючых запускаў не выглядаюць відавочна правільнымі; выберыце адзін варыянт і прымусьце запускальнік яго рэалізаваць, замест таго каб планавальнік вырашаў выпадкова.

Падлічыце палі перад камандай

Crontab карыстальніка і сістэмны crontab адрозніваюцца тым, ці з'яўляецца слупок імя карыстальніка перад камандай. Запіс, скапіяваны паміж імі, альбо выконваецца ад імя не таго ўліковага запісу, альбо перадае імя карыстальніка як першае слова каманды. Звяртайцеся да ўстаноўленай даведкі, а не да кіраўніцтва, і падлічыце палі ў сваім радку. Запіс з пяццю палямі і шостым словам перад камандай гэта сістэмны crontab; той жа радок у crontab карыстальніка спрабуе выканаць гэтае слова як праграму.

Ідэнтычнасць выканання цягне за сабой асяроддзе. Задача cron не атрымлівае ў спадчыну разблакаванае кальцо ключоў, інтэрактыўны запыт пароля або працоўны каталог, у якім вы праводзілі тэставанне.

Чакайце гатоўнасці, а не гадзінніка

Паспяховы запуск яшчэ не працуючы тунэль. Кліент можа яшчэ вызначаць сваю канчатковую кропку, праходзіць аўтэнтыфікацыю або ўсталёўваць маршруты, калі задача ўжо завяршылася. Любая залежная задача павінна чакаць абаронены рэсурс, які ёй сапраўды патрэбны, з абмежаваным тайм-аўтам і запісам аб збоі, а не фіксаваную колькасць секунд. Гэтае адрозненне аддзяляе расклад, які пераважна працуе, ад таго, які моўчкі збоіць у загружанай раніцы.

Калі ў гэтую гадзіну патрабуецца інтэрактыўная MFA, задача можа папрасіць чалавека пра ўвагу, але не можа даць адказ. Пакіньце гэты выпадак яўным, замест таго каб убудоўваць паўторна выкарыстоўваемы пароль або паўтараць спробы бясконца.

Для сапраўды аднагоразовай актывацыі выкарыстоўвайце падтрымліваемы механізм аднаго запуску. Рэгулярнае правіла, якое трэба памятаць і выдаляць, гэта будучы паўторны запуск.

Падобныя артыкулы