Содержание
- другие опции start-stop-daemon
- ссылки
В этой статье будет рассмотрено использование start-stop-daemon
. Данная утилита идет в составе dpkg и, следовательно, присутствует в любой системе на базе Debian/Ubuntu.
Ее функция следующая: она позволяет запустить любой процесс в виде демона, то есть в фоне. Это нужно для того, чтобы запускать в фоне те процессы, которые сами не умеют уходить в фон. Запуск процесса в виде демона позволит не держать постоянной открытой tty-консоль или вкладку в терминале, а также даст больше возможностей для контроля данного процесса.
Основы
Как упомянуто выше, основное предназначение - запуск программ в фоновом режиме. В качестве примера будет взят museekd
, демон-клиент для p2p-сети soulseek. start-stop-daemon имеет два обязательных параметра: -S
(или –start
) и -K
(–stop
), один из которых должен присутствовать в любой команде. Далее следуют параметры, указывающие, что и как запустить.
Запуск демона
Для того, чтобы запустить демон необходимо помимо ключа -S
указать так же исполняемый файл – /usr/bin/museekd
. Исполняемый файл задается ключом -x
start-stop-daemon -Sx /usr/bin/museekd
Однако, в фон программа не уйдет и вы увидите на экране ее вывод. Для того, чтобы процесс уходил в фон, нужно добавить ключ -b
. Заодно добавьте ключ -v
для отображения диагностических сообщений
start-stop-daemon -Sbvx /usr/bin/museekd
Программа запустится и будет работать в фоне. Для взятого примера этого достаточно.
Остановка демона
Для остановки процесса нужно указать ключ -K
, т.е. действие «стоп», а так же сам процесс, который нужно остановить. Процесс для остановки так же указывается по исполняемому файлу, с помощью ключа -x
start-stop-daemon -Kvx /usr/bin/museekd
start-stop-daemon найдет процесс museekd и остановит его (по умолчанию - отправив SIGTERM).
Работа с pid-файлами
Если вы хотите запустить несколько копий одной программы, следует использовать pid-файлы1) для управления такими процессами.
Для запуска museekd с созданием pid-файла следует использовать ключ -p
. Пример:
start-stop-daemon -Sbvmp $HOME/.museekd/pid -x /usr/bin/museekd
Здесь также появился ключ -m
, указывающий утилите start-stop-daemon, что pid-файл нужно создать при запуске программы. Некоторые программы умеют создавать pid-файлы самостоятельно – в этом случае данный ключ не нужен.
Теперь в заданном файле записан PID запущенного процесса. Зная его, вы можете отличить его от других копий той же программы, найти процесс, к примеру, в top и сделать с ним что-либо (например, изменить приоритет или остановить).
Для остановки процессов также можно использовать pid-файлы, чтобы остановить конкретный процесс. При этом указание исполняемого файла не требуется, нужно лишь задать действие «стоп» и pid-файл
start-stop-daemon -Kvp $HOME/.museekd/pid
start-stop-daemon прочитает PID из заданного файла, проверит, есть ли такой процесс и остановит его.
Прочие возможности
Передача параметров запускаемой программе
Если запускаемой программе нужно передать какие-либо параметры, они отделяются двумя дефисами. Все, что идет далее, не воспринимается как параметры для start-stop-daemon, а передается запускаемой программе в неизмененном виде. Пример запуска museekd с альтернативным файлом конфигурации:
start-stop-daemon -Sbvmx /usr/bin/museekd -p $HOME/.museekd/pid -- -c .museekd/config.new
Данная конструкция запустит museekd -c .museekd/config.new
. Двойной дефис и следующие за ним параметры не обязательно располагать после исполняемого файла. Главное – в конце комманды.
Утилита start-stop-daemon имеет гораздо больше возможностей, чем описано в данной статье. Например, она позволяет запустить процесс от имени другого пользователя или даже в chroot-окружении, задать приоритет процесса, изменить сигнал остановки (например, использовать SIGKILL вместо SIGTERM) и т. п. Больше информации можно получить из man start-stop-daemon
и start-stop-daemon –help
.