Начини плаћања Abuse

Како подесити СуперВисор

18.04.2022, 23:02

За управљање процесорима, Линук има системе за иницијализацију као што је системд. Ако вам је потребно једноставније решење, програм који може да управља процесима ваше апликације, у систему или у Доцкер контејнеру. Такав програм постоји - он је супервизор. Функционално једноставан менаџер процеса отвореног кода написан у Питхон-у, помоћу којег можете покренути жељени број копија процеса и пратити њихов статус. Затим ћемо вам рећи како да инсталирате и конфигуришете Супервизор користећи Убунту 20.04 као пример.

Инсталирање супервизора

Најлакши начин да добијете програм је да га инсталирате из званичних спремишта. Да бисте то урадили, потребно је да покренете наредбу:

 $ sudo apt install supervisor

Како подесити СуперВисор

Ако желите да програм ради константно, потребно је да га додате у покретање и покренете. Покрени:

 $ sudo systemctl enable supervisor --now

Како подесити СуперВисор

Затим можете погледати статус користећи команду:

 $ sudo systemctl status supervisor

Како подесити СуперВисор

Процес подешавања

Конфигурациони фајл се налази на /etc/supervisor/supervisord.conf. Ево главних подешавања. Да бисте конфигурисали покренуте процесе, боље је користити /etc/supervisor/conf.d/. Главна конфигурациона датотека може се оставити као подразумевана. Хајде да погледамо како да креирамо конфигурационе датотеке за програме. Синтакса одељка за један процес изгледа овако:

variable name value

За сваки процес, минимално је потребно проследити следеће варијабле да би се аутоматски покренуо и опоравио након пада:

  • directory - радни именик;
  • command - команда за покретање процеса;
  • user - корисник у чије име ће процес бити покренут;
  • autostart - да ли процес треба да се покрене аутоматски;
  • autorestart - да ли процес треба поново покренути;

Међутим, постоји много више доступних подешавања, ево неких од оних о којима ће бити речи у овом чланку:

  • priority - приоритет процеса који се покреће;
  • environment - променљиве окружења које треба проследити процесу;
  • stdout_logfile - где да преусмери стдоут излаз процеса;
  • stderr_logfile - где преусмерити стдерр излаз процеса;
  • process_name - назив процеса, са могућношћу замене броја копије;
  • numprocs - број покренутих копија процеса;
  • startretries - број покушаја покретања програма;
  • redirect_stderr - преусмери излаз грешке процеса на излаз супервизора;
  • redirect_stdout - преусмери излаз процеса на излаз супервизора.

За боље разумевање и пример, покренимо скрипту у ПХП-у, која ће једноставно висити у позадини:

 $ sudo vi /home/sergiy/program/process.php <?php echo "Started..."; while(true){ sleep(5); }

Можете креирати засебну конфигурациону датотеку супервизора за процес. Можете уметнути конфигурацију директно на крај главне конфигурационе датотеке, али је боље да то не радите. Боље је да направите засебну конфигурациону датотеку за сваки програм у директоријуму /etc/supervisor/conf.d/ са именом *.цонф. На пример, за овај програм ова датотека ће изгледати овако:

 $ sudo vi /etc/supervisor/conf.d/process.conf [program:process] directory=/home/sergiy/program/ command=/usr/bin/php process.php user=sergiy autostart=true autorestart=true

Затим морате поново покренути супервизор, то се може урадити помоћу системцтл:

 $ sudo systemctl restart supervisor

Или помоћу услужног програма supervisorctl :

 $ sudo supervisorctl reload

Како подесити СуперВисор

Такође можете видети статус конфигурисаних процеса користећи команду:

Како подесити СуперВисор

Ако је процес у статусу РУННИНГ, ово је све у реду и успешно је покренут. Али у овом случају, процес се покреће у једној инстанци, а често је потребно покренути неколико копија истог процеса. Да бисте то урадили, можете користити параметре process_name и numprocs . Први вам омогућава да измените име процеса тако да садржи број копије, а други одређује колико копија треба да се покрене.

Променљива process_name је обично испуњена Питхон шаблоном за форматирање стринга који садржи име програма и број процеса: %(program_name)s_%(process_num)02d . Овде је у заградама име променљиве, а затим њен тип. На пример, да бисте покренули исти програм у четири нити, конфигурациона датотека мора да се промени у овај облик:

 $ sudo vi /etc/supervisor/conf.d/process.conf [program:process] directory=/home/sergiy/program/ command=/usr/bin/php process.php user=sergiy autostart=true autorestart=true process_name=%(program_name)s_%(process_num)02d numprocs=4

Сада морате поново да покренете supervisorctl и 4 процеса ће се већ покренути:

 $ sudo supervisorctl status

Како подесити СуперВисор

У исто време, можете сачувати све податке које програм издаје у датотеку евиденције. stderr_logfile. параметри stdout_logfile и стдерр_логфиле. На пример, можете приказати датотеку евиденције његовог извршења директно у фасцикли са програмом.

 $ sudo vi /etc/supervisor/conf.d/process.conf [program:process] directory=/home/sergiy/program/ command=/usr/bin/php process.php user=sergiy autostart=true autorestart=true process_name=%(program_name)s_%(process_num)02d numprocs=4 stdout_logfile=/home/sergiy/program/process.log stderr_logfile=/home/sergiy/program/process.log.error

Након поновног покретања услуге, евиденције ће се појавити у фасцикли програма:

Како подесити СуперВисор

Слично томе, ако желите да преусмерите излаз својих процеса на стандардни излаз супервизора, требало би да користите опције redirect_stderr и redirect_stdout. Ако су вашем програму потребне променљиве окружења, можете их проследити помоћу параметра окружења. Променљиве морају бити написане одвојене зарезима. на пример:

 $ environment=DISPLAY=":1",HOME="/root"

Након сваке промене конфигурације, не заборавите да поново покренете супервизор да бисте применили промене. Можете управљати процесима помоћу услужног програма супервисорцтл. Као што сте већ разумели, да бисте видели листу процеса које треба да покренете:

 $ sudo supervisorctl status

Затим, знајући име процеса, можете га поново покренути, на пример process:process_00 :

 $ sudo supervisorctl restart process:process_00

Како подесити СуперВисор

зауставити:

 $ sudo supervisorctl stop process:process_00

Или покрените:

 $ sudo supervisorctl start process:process_00

Поред тога, можете се повезати са процесом и видети шта он излази на stdout/stderr користећи fg:

 $ sudo supervisorctl fg process:process_00

Погледали смо како је supervisor конфигурисан, као и како користити програм за управљање процесима.