Supervisor или как запускать скрипты в фоне

Статьи по теме тега: «Управление процессами»

http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>style=»padding-top:6px;padding-bottom:6px;»>

Во-первых, основное введение 1. В LINUX каждая исполняемая программа (код) называется процессом. Каждому процессу назначается идентификационный номер. 2. Каждый процесс соответствует родительскому про…

Во-первых, основной процесс управления процессом: Процесс создания 1) Событие (причина), когда один процесс создает другой процесс) Логин пользователя: запрос пользователя с разделением времени планир…

1. Понимание процесса 1. У каждого процесса есть программа для его выполнения, то есть инструкции, хранящиеся в сегменте кода. Однако эта инструкция не обязательно уникальна для процесса, и также возм…

Первые слова То, что на самом деле может делать компьютер, очень простое по своей природе, например, вычисление суммы двух чисел, поиск адреса в памяти и т. Д. Эти самые основные компьютерные действия…

Освойте организационную структуру процесса в системе Linux. Уясните взаимосвязь между сеансами, процессами, группами процессов и заданиями. Поймите взаимосвязь между фронтальными и фоновыми процессами…

Эксперимент Linux Management Management Во-первых, экспериментальная цель 1. Мастер Vim Compiler 2. Оставьте использование компилятора GCC 3. Узнайте о программе FORK () Во-вторых, экспериментальные и…

Эта статья состоит из трех частей: Основы управления памятьюКраткое описание основных методов управления памятью со всего компьютерного поля. Механизм управления памятью в LinuxAndroid — операционная …

Скрипт управления процессами в Linux Краткое описание Таймер Linux Основная команда конкретный контент crontab Сценарий управления процессом Основной источник Карта эффектов Слова для читателей Кратко…

Исследование JavaSE отмечает день три оператора и управление потоком В чем разница между перерывом и продолжением? перерыв, чтобы завершить блок напрямую, Продолжить, чтобы пропустить этот блок цикла …

From:http://blog.chinaunix.net/uid-25681671-id-3201927.html Команды управления процессами и заданиями:http://man.linuxde.net/sub/ Процесс и управление работой Linux команды о процессах / потоках убить…

Основное введение в процесс (1) В LINUX каждая исполняемая программа (код) называется процессом. Каждому процессу назначается идентификационный номер. (2) Каждый процесс соответствует родительскому пр…

5.1 Значение разрешений в каталогах и файловых приложениях Эта статья основана на системе centos7 Важность разрешений для файлов: Файлы — это «контейнеры», которые на самом деле содержат и..

QNX-глава 3 Межпроцессное взаимодействие (часть 1) Межпроцессное взаимодействие играет жизненно важную роль в преобразовании микроядра из встроенного ядра реального времени в комплексную операционную …

Установка

sudo aptitude update
sudo aptitude install supervisor

Общая настройка демона supervisor

Откроем для редактирования основной конфиг supervisor

mcedit /etc/supervisor/supervisord.conf

и приведем к виду:


file=/var/run/supervisor.sock 
chmod=0400 
chown=root:root ; только root сможет использовать supervisorctl 
#username=user
#password={SHA}5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8


port = 192.168.10.1:9988
username = user
password = {SHA}5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8


logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes = 10MB
logfile_backups=10
loglevel = info
pidfile=/var/run/supervisord.pid
childlogdir=/var/log/supervisor 


supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface


serverurl=unix:///var/run/supervisor.sock

files = /etc/supervisor/conf.d/*.conf

Подробнее см. на http://supervisord.org/configuration.html

Получаем хэш SHA-1 пароля для доступа через supervisorctl и http.

echo -n your_password | sha1sum | awk '{print $1}'

Сценарии управления процессами

В каталоге /etc/supervisor/supervisor.d/ по умолчанию находятся файлы со сценариями запуска и управления приложениями через  supervisor.

Пример конфигурационного файла supervisor для запуска двух процессов shadowsocks:


command=sslocal --user shadowsocks -qq -c /etc/shadowsocks/shadowsocks_%(process_num)s.conf
process_name=%(program_name)s_%(process_num)d
numprocs=2
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
redirect_stderr=true
user=root
stdout_logfile=/var/log/shadowsocks/%(program_name)s_%(process_num)d.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5

#stderr_logfile=/var/log/shadowsocks/stderr_%(program_name)s_%(process_num)d.log
stderr_logfile_maxbytes=10MB
stderr_logfile_backups=5

локальный (привязаны к процессору и возможны только в пределах компьютера);

— каналы

  1. pipe (они же конвейеры, так же неименованные каналы), о них я много рассказывал в прошлом посте, примером можно привести: команда1 | команда2. По сути, pipe использует stdin, stdout и stderr.
  2. Именованные каналы (FIFO: First In First Out). Данный вид канала создаётся с помощью mknod или mkfifo, и два различных процесса могут обратиться к нему по имени. Пример работы с fifo:

в первом терминале (создаем именованный канал в виде файла pipe и из канала направляем данные с помощью конвейера в архиватор):

# mkfifo pipe
# ls -l
total 0
prw-r--r-- 1 root root 0 Nov  9 19:41 pipe
# gzip -9 -c < pipe > out

во втором терминале (отправляем в именованный канал данные):

# cat /path/to/file > pipe

в результате это приведет к сжатию передаваемых данных gzip-ом

— сигналы

сигнал — это асинхронное уведомление процесса о каком-либо событии. Когда сигнал послан процессу, операционная система прерывает выполнение процесса. Если процесс установил собственный обработчик сигнала, операционная система запускает этот обработчик, передав ему информацию о сигнале. Если процесс не установил обработчик, то выполняется обработчик по умолчанию.
Все сигналы начинаются на «SIG…» и имеют числовые соответствия, определяемые в заголовочном файле signal.h. Числовые значения сигналов могут меняться от системы к системе, хотя основная их часть имеет в разных системах одни и те же значения. Утилита kill позволяет задавать сигнал как числом, так и символьным обозначением.
Сигналы можно послать следующими способами:

— разделяемая память

Разделяемую память применяют для того, чтобы увеличить скорость прохождения данных между процессами. В обычной ситуации обмен информацией между процессами проходит через ядро. Техника разделяемой памяти позволяет осуществить обмен информацией не через ядро, а используя некоторую часть виртуального адресного пространства, куда помещаются и откуда считываются данные.

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

— очереди сообщений

В общих чертах обмен сообщениями выглядит примерно так: один процесс помещает сообщение в очередь посредством неких системных вызовов, а любой другой процесс может прочитать его оттуда, при условии, что и процесс-источник сообщения и процесс-приемник сообщения используют один и тот же ключ для получения доступа к очереди.

Просмотр запущенных процессов в Linux

top

Чтобы посмотреть, какие процессы запущены на вашем сервере, нужно запустить команду :

В верхней части подборки приведена статистика по системе, в том числе сведения о нагрузке и общем количестве задач.

Вы можете легко увидеть, что в системе запущен 1 процесс, а 55 процессов находятся в режиме сна (т. е. не активны/не используют ресурсы ЦП).

В нижней части отображаются запущенные процессы и статистика их использования.

htop

В репозиториях доступна улучшенная версия , которая называется . Установите ее с помощью следующей команды:

Если мы запустим команду , мы увидим отображение информации в более удобном формате:

Вы можете здесь.

Статьи по теме тега: «Linux управление процессами»

http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>style=»padding-top:6px;padding-bottom:6px;»>

Один,Цель     Углубить понимание концепций процессов и одновременного выполнения процессов за счет создания, отмены и эксплуатации процессов, а также прояснить разницу между процес…

Краткое описание процесса Что такое процесс? Процесс — это запущенный экземпляр исполняемой программы, которая была запущена. Процесс состоит из следующих компонентов: • Адресное пространство выд…

Эта серия статей будет посвящена изучению и анализу связанного содержания процесса, включая основные концепции процесса, создание процесса, то, как fork, vfork, clone и другие системные вызовы создают…

From:http://blog.chinaunix.net/uid-25681671-id-3201927.html Команды управления процессами и заданиями:http://man.linuxde.net/sub/ Процесс и управление работой Linux команды о процессах / потоках убить…

Основное введение в процесс (1) В LINUX каждая исполняемая программа (код) называется процессом. Каждому процессу назначается идентификационный номер. (2) Каждый процесс соответствует родительскому пр…

5.1 Значение разрешений в каталогах и файловых приложениях Эта статья основана на системе centos7 Важность разрешений для файлов: Файлы — это «контейнеры», которые на самом деле содержат и..

В этой статье описывается использование yum для установки супервизора, рекомендуется для малых и средних компаний управлять процессом и использовать супервизор. фон:         Superv…

Познакомьтесь с некоторыми инструментами, предоставляемыми Linux, для просмотра и управления процессами. Освоение этих инструментов позволяет нам просматривать соответствующие индикаторы во время, ког…

Управление процессом Основное введение В LINUX каждая выполняемая программа (код) называется процессом. Каждому процессу назначается идентификационный номер. Каждый процесс соответствует родительскому…

Суть службы — это процесс, но он работает в фоновом режиме и обычно слушает порт и ждет запросов от других программ, таких как (mysql, sshd, firewall и т. Д.), Поэтому нас также называют демоном, кото…

Во-первых, начать процесс Самый простой способ запустить процесс — ввести его имя в командной строке и нажать клавишу Enter. Если вы хотите запустить веб-сервер Nginx, введите nginx. Может быть, вы пр…

базаЭто введение 1)вLINUXКаждый исполненкод)Все называют однимобработать, Каждому процессу назначаетсяIDчисло。 2)каждыйПроцесс будет соответствовать родительскому процессу, и этот родительский процесс…

SupervisorДа использоватьPythonРазработан набор общих программ управления процессами, которые могут превратить обычный процесс командной строки в фоновый режимdaemon, И контролировать состояние процес…

1. Введение 1.1 Планирование процессов Уникальное описание каждого процесса хранится в памяти, и оно связано с другими процессами через несколько структур. С такой ситуацией сталкивается планировщик. …

Уникальное описание каждого процесса хранится в памяти и связано с другими процессами несколькими структурами. Именно с такой ситуацией сталкивается планировщик, задача которого — разделить процессорн…

удаленный;

— удаленные вызовы процедур (Remote Procedure Calls — RPC)

RPC — разновидность технологий, которая позволяет компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых компьютерах). Обычно, реализация RPC технологии включает в себя два компонента: сетевой протокол (чаще TCP и UDP, реже HTTP) для обмена в режиме клиент-сервер и язык сериализации объектов (или структур, для необъектных RPC).

— сокеты Unix

Сокеты UNIX бывают 2х типов: локальные и сетевые. При использовании локального сокета, ему присваивается UNIX-адрес и просто будет создан специальный файл (файл сокета) по заданному пути, через который смогут сообщаться любые локальные процессы путём простого чтения/записи из него. Сокеты представляют собой виртуальный объект, который существует, пока на него ссылается хотя бы один из процессов. При использовании сетевого сокета, создается абстрактный объект привязанный к слушающему порту операционной системы и сетевому интерфейсу,  ему присваивается INET-адрес, который имеет адрес интерфейса и слушающего порта.

Отправка сигналов процессам в Linux

Все процессы Linux реагируют на сигналы. Операционная система использует сигналы, чтобы отправить программам команду остановиться или изменить поведение.

Отправка сигналов процессам по PID

Наиболее распространенный способ передачи сигналов в программу — использовать команду .

Как вы можете догадаться, по умолчанию эта утилита пытается уничтожить процесс:

<pre>kill <span class=“highlight”>PIDoftarget_process</span></pre>

Она отправляет процессору сигнал TERM. Сигнал TERM просит процесс остановиться. Это позволяет программе выполнить операции по очистке и нормально завершить работу.

Если программа работает неправильно и не завершает работу после получения сигнала TERM, мы можем отправить сигнал более высокого уровня — :

<pre>kill -KILL <span class=“highlight”>PIDoftarget_process</span></pre>

Это специальный сигнал, который не отправляется программе.

Вместо этого он передается в ядро операционной системы, которое отключает процесс. Он используется, чтобы обходить программы, игнорирующие отправляемые им сигналы.

Каждому сигналу присвоено число, которое можно передать вместо имени. Например, вы можете передать “-15” вместо “-TERM” и “-9” вместо “-KILL”.

Использование сигналов для других целей

Сигналы используются не только для отключения программ. Их также можно использовать для выполнения других действий.

Например, многие демоны перезапускаются при получении сигнала или прекращения работы. Например, так работает Apache.

<pre>sudo kill -HUP <span class=“highlight”>pidofapache</span></pre>

Получив вышеуказанную команду, Apache перезагрузит файл конфигурации и возобновит вывод контента.

Вы можете вывести список сигналов, которые можно отправлять с помощью kill, используя следующую команду:

Отправка сигналов процессам по имени

Хотя обычно при отправке сигналов используются PID, существуют способы использовать для этой же цели обычные имена процессов.

Команда работает практически точно так же как и , но использует имя процесса:

Вышеуказанная команда эквивалентна команде:

Если вы хотите отправить сигнал каждому экземпляру определенного процесса, вы можете использовать команду :

Приведенная выше команда отправит сигнал TERM всем экземплярам firefox, запущенным на этом компьютере.

Использование

После первоначальных настроек перезапустим демон supervisord

sudo invoke-rc.d supervisor restart

Далее для работы с supervisor лучше использовать supervisorctl.

После добавления/редактирования конфигурации нового сервиса необходимо «перечитать» конфиги.

Показать список приложений, конфиги которых были изменены.

sudo supervisorctl reread

Перечитать конфиги и перезапустить сервисы, конфиги которых были изменены.

sudo supervisorctl update

Показать текущий статус всех процессов под управлением supervisor
sudo supervisorctl status
или только статус конкретного процесса

sudo supervisorctl status sslocal:sslocal_0

Перезапустить процесс

sudo supervisorctl restart sslocal:sslocal_0

Настройка init,  supervisor

Настроим автоматическую загрузку демона supervisord на втором уровне init (Debian и Ubuntu по умолчанию запускаются на втором уровне инициализии).

sudo update-rc.d -f supervisor remove
sudo sysv-rc-conf --level 2 supervisor on
sudo sysv-rc-conf --list supervisor

Использование ps для вывода перечня процессов

И , и предоставляют удобный интерфейс для просмотра работающих процессов, похожий на графический диспетчер задач.

Однако эти инструменты не всегда достаточно гибкие, чтобы охватывать все сценарии. Решить эту проблему может помочь мощная команда .

При вызове без аргументов вывод может быть довольно сжатым:

Вывод показывает все процессы, связанные с текущим пользователем и текущим сеансом терминала. Это имеет смысл, потому что мы запускаем на этом терминале только и .

Чтобы получить более полное представление о процессах в данной системе, мы можем использовать следующую команду:

Эти опции предписывают показать процессы, принадлежащие всем пользователям (вне зависимости от привязки терминала) в удобном формате.

Чтобы посмотреть представление дерева с иллюстрацией иерархических отношений, данную команду можно запустить с этими опциями:

Как видите, процесс отображается как родитель процесса и других процессов.

Примечание об идентификаторах процессов

В системах Linux и Unix каждому процессу назначается идентификатор процесса или PID. Операционная система использует их для идентификации и отслеживания процессов.

Чтобы быстро узнать PID процесса, вы можете использовать команду :

Эта команда просто запросит идентификатор процесса и выведет его.

Процессу init, который создается первым при загрузке, присваивается PID “1”.

Этот процесс отвечает за создание всех остальных процессов в системе. Последующим процессам присваиваются большие номера PID.

Родитель процесса — это процесс, который отвечает за его создание. Родительские процессы имеют идентификатор PPID, который можно увидеть в заголовках столбцов многих приложений для управления процессами, включая , и .

Любое взаимодействие между пользователем и операционной системой, связанное с процессами, включает взаимное преобразование имен процессов и PID. Именно поэтому утилиты сообщают вам PID.

Отношения родительских и дочерних элементов

Создание дочернего процесса осуществляется в два этапа: fork() создает новое адресное пространство и копирует в него ресурсы, принадлежащие родительскому процессу, с помощью copy-on-write; а exec() загружает исполняемый блок в адресное пространство и выполняет его.

Если дочерний процесс завершается раньше родительского, он остается бесхозным, пока родитель не получит информацию о нем или не сообщит ядру, что эта информация не требуется. В этом случае ресурсы дочернего процесса освободятся. Если родительский процесс завершается раньше дочернего, дочерний процесс привязывается к процессу init, хотя его можно переназначить другому процессу.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: