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

Допуск належыць запуску, а не існаванню файла cron.

Зялёны запуск — гэта не завершаная задача

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

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

Правярайце злучэнне, а не імя інтэрфейса

Інтэрфейс з імем tun0 можа існаваць без важнай сесіі, і іншае злучэнне можа валодаць гэтым імем. Правярайце канкрэтны аб'ект, ад якога залежыць задача: адну ідэнтычнасць профілю, адзін экзэмпляр сэрвісу або невялікую зацверджаную аперацыю супраць рэсурсу. Трымайце праверку абмежаванай у часе і трымайце ўліковыя даныя па-за аргументамі працэсу і дыягнастычнымі журналамі.

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

Пропускі і збоі — гэта розныя вынікі

[Service]
Type=oneshot
User=worker
ExecCondition=/usr/local/libexec/check-office-path
ExecStart=/usr/local/bin/private-task

У разгортванні systemd ExecCondition= запускае гэты правяральнік перад нагрузкай. Яго паводзіны пры выхадзе канкрэтныя: нуль працягвае, коды ад аднаго да 254 прапускаюць астатнія каманды запуску, не пазначаючы модуль як няўдалы, а 255 або аварыйнае завяршэнне робіць яго няўдалым. Гэта дае тры розныя сігналы, якія карысныя толькі тады, калі кантракт правяральніка свядома супастаўлены з імі. Налады, якія пераазначаюць поспех, могуць змяніць карціну, таму дакументуйце супастаўленне.

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

Ахоўвайце ўвесь запуск, а не толькі пачатак

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

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

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

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