Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:start-stop-daemon [2010/06/06 04:37] добавил про передачу параметров запускаемой программе |
wiki:start-stop-daemon [2013/04/04 15:26] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== утилита start-stop-daemon ====== | + | ======start-stop-daemon ====== |
- | ===== введение ===== | + | <note tip>Эта статья не закончена. Вы можете помочь проекту добавив информацию про: |
- | в этой статье мы рассмотрим использование ''start-stop-daemon''. данная замечательная утилита идет в составе dpkg, и, следовательно, присутствует в любой системе на базе Debian/Ubuntu. | + | * другие опции start-stop-daemon |
- | функция ее следующая: она позволяет запустить любой процесс в виде демона, то есть в фоне. нужно это для того, чтобы запускать в фоне те процессы, которые сами не умеют ухожить в фон. запуск процесса в виде демона позволит не держать постоянной открытой tty-консоль или вкладку в терминале, а также даст больше возможностей для контроля данного процесса | + | * ссылки |
- | ===== основы ===== | + | </note> |
- | как и упомянуто выше, основное предназначение - запуск программ в фоновом режиме. в качестве примера возьмем museekd, демон-клиент для p2p-сети soulseek ((да-да, демон, не умеющий работать в виде демона. бывает и такое)). start-stop-daemon имеет два обязательных параметра: ''-S'' (или ''--start'') и ''-K'' (''--stop''), один из которых должен присутствовать в любой команде. далее следуют параметры, указывающие, что и как запустить. | + | В этой статье будет рассмотрено использование ''start-stop-daemon''. Данная утилита идет в составе [[dpkg]] и, следовательно, присутствует в любой системе на базе Debian/Ubuntu. |
- | для начала просто запустим museekd. для этого укажем программе в качестве действия запуск, а в качестве исполняемого файла - ''/usr/bin/museekd''. исполняемый файл задается ключом ''-x'' | + | |
- | <code>start-stop-daemon -Sx /usr/bin/museekd</code> | + | Ее функция следующая: она позволяет запустить любой процесс в виде [[демоны|демона]], то есть в фоне. Это нужно для того, чтобы запускать в фоне те процессы, которые сами не умеют уходить в фон. Запуск процесса в виде демона позволит не держать постоянной открытой tty-консоль или вкладку в терминале, а также даст больше возможностей для контроля данного процесса. |
- | однако, в фон программа пока что не уйдет, а вы увидите на экране ее вывод. для того, чтобы процесс уходил в фон, нужно добавить ключ ''-b''. заодно добавим ключ ''-v'' для отображения диагностических сообщений | + | |
- | <code>start-stop-daemon -Sbvx /usr/bin/museekd</code> | + | ===== Основы ===== |
- | уже лучше. программа запустилась и работает в фоне. в нашем примере этого достаточно для того, чтобы museekd подключился к серверу и начал работу. | + | Как упомянуто выше, основное предназначение - запуск программ в фоновом режиме. В качестве примера будет взят ''[[museek|museekd]]'', демон-клиент для p2p-сети soulseek. start-stop-daemon имеет два обязательных параметра: ''-S'' (или ''--start'') и ''-K'' (''--stop''), один из которых должен присутствовать в любой команде. Далее следуют параметры, указывающие, что и как запустить. |
- | для остановки процесса нужно указать ключ ''-K'', т.е. действие "стоп", а так же сам процесс, который нужно остановить. процесс для остановки мы опять же укажем по исполняемому файлу, с помощью ключа ''-x'' | + | |
- | <code>start-stop-daemon -Kvx /usr/bin/museekd</code> | + | ==== Запуск демона ==== |
- | start-stop-daemon найдет процесс museekd и остановит его (по умолчанию - отправив SIGTERM). все, программа завершила свою работу | + | Для того, чтобы запустить демон необходимо помимо ключа ''-S'' указать так же исполняемый файл -- ''/usr/bin/museekd''. Исполняемый файл задается ключом ''-x'' |
- | ===== работа с pid-файлами ===== | + | <code bash>start-stop-daemon -Sx /usr/bin/museekd</code> |
- | если вы хотите запустить несколько копий одной программы, следует использовать pid-файлы((pid - это уникальный номер, по которому идентифицируется каждый запущенный в системе процесс. по pid можно отличить разные копии одной программы. pid-файл - это простой текстовый файл, в который записывается pid процесса. pid-файлы для некоторых системных процессов можно найти в /var/run)) для управления такими процессами. | + | Однако, в фон программа не уйдет и вы увидите на экране ее вывод. Для того, чтобы процесс уходил в фон, нужно добавить ключ ''-b''. Заодно добавьте ключ ''-v'' для отображения диагностических сообщений |
- | запустим тот же самый museekd, записав pid-файл в его папку с настройками. путь к pid-файлу задается с помощью ключа ''-p'' | + | <code bash>start-stop-daemon -Sbvx /usr/bin/museekd</code> |
- | <code>start-stop-daemon -Sbvmp $HOME/.museekd/pid -x /usr/bin/museekd</code> | + | Программа запустится и будет работать в фоне. Для взятого примера этого достаточно. |
- | еще здесь интересен ключ ''-m'' он укажет утилите start-stop-daemon, что pid-файл нужно создать при запуске программы. некоторые программы сами умеют создавать pid-файлы - в этом случае данный ключ не нужен | + | ==== Остановка демона ==== |
- | теперь в заданном файле записан pid запущенного процесса. зная его, вы можете отличить его от других копий той же программы, найти процесс, к примеру, в htop и сделать с ним что-либо (например, изменить приоритет или остановить). | + | Для остановки процесса нужно указать ключ ''-K'', т.е. действие "стоп", а так же сам процесс, который нужно остановить. Процесс для остановки так же указывается по исполняемому файлу, с помощью ключа ''-x'' |
- | для остановки процессов также можно использовать pid-файлы, чтобы остановить конкретный процесс. при этом указание исполняемого файла не требуется, нужно лишь задать действие "стоп" и pid-файл | + | <code bash>start-stop-daemon -Kvx /usr/bin/museekd</code> |
- | <code>start-stop-daemon -Kvp .museekd/pid</code> | + | start-stop-daemon найдет процесс museekd и остановит его (по умолчанию - отправив SIGTERM). |
- | start-stop-daemon прочитает pid из заданного файла, проверит, есть ли такой процесс и остановит его | + | |
- | ===== прочие возможности ===== | + | ===== Работа с pid-файлами ===== |
- | ==== передача параметров запускаемой программе ==== | + | Если вы хотите запустить несколько копий одной программы, следует использовать pid-файлы((PID -- это уникальный номер, по которому идентифицируется каждый запущенный в системе процесс. По PID можно отличить разные копии одной программы. pid-файл - это простой текстовый файл, в который записывается PID процесса. pid-файлы для некоторых системных процессов можно найти в /var/run)) для управления такими процессами. |
- | если запускаемой программе нужно передать какие-либо параметры, они отделяются двумя дефисами. все, что идет далее, не воспринимается как параметры для start-stop-daemon, а передается запускаемой программе в неизмененном виде. запустим все тот же museekd с альтернативным файлом конфигурации | + | Для запуска museekd с созданием pid-файла следует использовать ключ ''-p''. Пример: |
- | <code>start-stop-daemon -Sbvmx /usr/bin/museekd -p $HOME/.museekd/pid -- -c .museekd/</code> | + | <code bash>start-stop-daemon -Sbvmp $HOME/.museekd/pid -x /usr/bin/museekd</code> |
- | данная конструкция запустит ''museekd -c .museekd/config.new''. двойной дефис и следующие за ним параметры не обязательно располагать после исполяемого файла. главное - в конце команды | + | Здесь также появился ключ ''-m'', указывающий утилите start-stop-daemon, что pid-файл нужно создать при запуске программы. Некоторые программы умеют создавать pid-файлы самостоятельно -- в этом случае данный ключ не нужен. |
+ | |||
+ | Теперь в заданном файле записан PID запущенного процесса. Зная его, вы можете отличить его от других копий той же программы, найти процесс, к примеру, в top и сделать с ним что-либо (например, изменить приоритет или остановить). | ||
+ | |||
+ | Для остановки процессов также можно использовать pid-файлы, чтобы остановить конкретный процесс. При этом указание исполняемого файла не требуется, нужно лишь задать действие "стоп" и pid-файл | ||
+ | <code>start-stop-daemon -Kvp $HOME/.museekd/pid</code> | ||
+ | start-stop-daemon прочитает PID из заданного файла, проверит, есть ли такой процесс и остановит его. | ||
+ | |||
+ | ===== Прочие возможности ===== | ||
+ | ==== Передача параметров запускаемой программе ==== | ||
+ | Если запускаемой программе нужно передать какие-либо параметры, они отделяются двумя дефисами. Все, что идет далее, не воспринимается как параметры для start-stop-daemon, а передается запускаемой программе в неизмененном виде. Пример запуска museekd с альтернативным файлом конфигурации: | ||
+ | <code bash>start-stop-daemon -Sbvmx /usr/bin/museekd -p $HOME/.museekd/pid -- -c .museekd/config.new</code> | ||
+ | Данная конструкция запустит ''museekd -c .museekd/config.new''. Двойной дефис и следующие за ним параметры не обязательно располагать после исполняемого файла. Главное -- в конце комманды. | ||
------------ | ------------ | ||
- | утилита start-stop-daemon имеет гораздо больше возможностей, чем описано в данной статье. например, она позволяет запустить процесс от имени другого пользователя или даже в chroot-окружении, задать приоритет процесса, изменить сигнал остановки (например, использовать SIGKILL вместо SIGTERM)... в принципе, все это вполне понятно расписано в ''man start-stop-daemon'' или ''start-stop-daemon --help''. здесь же пусть будет описан необходимый простому пользователю минимум. впрочем, если кто-нибудь готов описать остальные функции - вперед! | + | Утилита start-stop-daemon имеет гораздо больше возможностей, чем описано в данной статье. Например, она позволяет запустить процесс от имени другого пользователя или даже в chroot-окружении, задать приоритет процесса, изменить сигнал остановки (например, использовать SIGKILL вместо SIGTERM) и т. п. Больше информации можно получить из ''man start-stop-daemon'' и ''start-stop-daemon --help''. |
- | {{tag>скрипт программы терминал консоль NEW}} | + | |
+ | {{tag>скрипты программы терминал Можно_улучшить}} |