- Как запустить demon linux
- start-stop-daemon
- Содержание
- Основы
- Запуск демона
- Остановка демона
- Работа с pid-файлами
- Прочие возможности
- Передача параметров запускаемой программе
- Запуск приложения в режиме «daemon» в Linux
- Первый способ
- Второй способ
- Третий способ
- Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности
- START-STOP-DAEMON¶
- НАЗВАНИЕ¶
- СИНТАКСИС¶
- ОПИСАНИЕ¶
- ОКРУЖЕНИЕ¶
- ПРИМЕЧАНИЕ¶
- СМ. ТАКЖЕ¶
- ОШИБКИ¶
- ИСТОРИЯ¶
Как запустить demon linux
Есть два демона SMB — /usr/sbin/smbd и /usr/sbin/nmbd . В большинстве дистрибутивов Linux , они запускаются, останавливаются и перезапускаются через стартовый скрипт, расположенный в /etc/rc.d/init.d/smb , на который созданы символьные ссылки с соответствующих уровней запуска.
Если Вы не будете использовать стандартные стартовые скрипты, то можете запустить демоны Samba из inetd или как автономные процессы. Samba будет «отвечать» чуть быстрее когда она запущена как автономный процесс, чем в случае, когда она запусчена из inetd . В некоторых случаях нужно проверить наличие в файле /etc/services примерно таких строк:
Убедитесь, что все они не закомментированы. В зависимости от дистрибутива, может понадобиться вообще добавить их в этот файл. Samba не сможет привязаться к соответствующим портам пока этих строк не будет в файле /etc/services .
Для запуска демонов из inetd , поместите следующие строки в конфигурационный файл inetd , /etc/inetd.conf :
Затем перезапустите демон inetd выполнив команду:
Для запуска демонов из системных стартовых скриптов, поместите следующий скрипт в файл /etc/rc.d/init.d/smb (для большинства дистрибутивов) и создайте на него символические ссылки с именами, указанными в комментариях:
Если при старте Samba Вы получаете сообщение в котором говорится, что демон не может подключится к порту 139 , то вероятно уже есть запущенные процессы Samba, которые не были завершены. Посмотрите список процессов (используя команду ps auxww | grep mbd ) для того, чтобы определить есть ли еще запущенные сервисы Samba.
Источник
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
Однако, в фон программа не уйдет и вы увидите на экране ее вывод. Для того, чтобы процесс уходил в фон, нужно добавить ключ -b . Заодно добавьте ключ -v для отображения диагностических сообщений
Программа запустится и будет работать в фоне. Для взятого примера этого достаточно.
Остановка демона
Для остановки процесса нужно указать ключ -K , т.е. действие «стоп», а так же сам процесс, который нужно остановить. Процесс для остановки так же указывается по исполняемому файлу, с помощью ключа -x
start-stop-daemon найдет процесс museekd и остановит его (по умолчанию — отправив SIGTERM).
Работа с pid-файлами
Если вы хотите запустить несколько копий одной программы, следует использовать pid-файлы 1) для управления такими процессами. Для запуска museekd с созданием pid-файла следует использовать ключ -p . Пример:
Здесь также появился ключ -m , указывающий утилите start-stop-daemon, что pid-файл нужно создать при запуске программы. Некоторые программы умеют создавать pid-файлы самостоятельно – в этом случае данный ключ не нужен.
Теперь в заданном файле записан PID запущенного процесса. Зная его, вы можете отличить его от других копий той же программы, найти процесс, к примеру, в top и сделать с ним что-либо (например, изменить приоритет или остановить).
Для остановки процессов также можно использовать pid-файлы, чтобы остановить конкретный процесс. При этом указание исполняемого файла не требуется, нужно лишь задать действие «стоп» и pid-файл
start-stop-daemon прочитает PID из заданного файла, проверит, есть ли такой процесс и остановит его.
Прочие возможности
Передача параметров запускаемой программе
Если запускаемой программе нужно передать какие-либо параметры, они отделяются двумя дефисами. Все, что идет далее, не воспринимается как параметры для start-stop-daemon, а передается запускаемой программе в неизмененном виде. Пример запуска museekd с альтернативным файлом конфигурации:
Данная конструкция запустит museekd -c .museekd/config.new . Двойной дефис и следующие за ним параметры не обязательно располагать после исполняемого файла. Главное – в конце комманды.
Утилита start-stop-daemon имеет гораздо больше возможностей, чем описано в данной статье. Например, она позволяет запустить процесс от имени другого пользователя или даже в chroot-окружении, задать приоритет процесса, изменить сигнал остановки (например, использовать SIGKILL вместо SIGTERM) и т. п. Больше информации можно получить из man start-stop-daemon и start-stop-daemon –help .
Источник
Запуск приложения в режиме «daemon» в Linux
Часто случается ситуация, что нужно запустить приложение в Linux, которое не должно быть завершено при выходе пользователя, а режима демона у приложения нет.
На этот случай можно воспользоваться парой приемов.
Первый способ
Запустить в сессии программы screen, которая не завершается при выходе пользователя.
screen -d -m команда
использованные параметры:
-d -m — Запустить новый сеанс screen, но не подключаться к нему.
Так же можно использовать параметр:
-S имя — задать имя сессии screen для удобства поиска сессии по имени.
Пример:
screen -d -m -S backgroud_ping ping 127.0.0.1
Эта команда запустит пинг адреса 127.0.0.1 и присвоит сессии имя backgroud_ping.
Для возврата к приложению и получению управления нужно:
посмотреть список активный сессий screen:
в выводе консоли мы увидим имя и PID процесса:
There is a screen on:
1218.backgroud_ping (13.05.2016 15:43:34) (Detached)
1 Socket in /var/run/screen/S-root.
запущенная сессия будет иметь имя backgroud_ping, и в данном случае, PID будет 1218.
теперь остается подключиться к процессу screen, это делается командой:
screen -r номер_PID
в нашем случае это будет:
Мы получили обратно управление над приложением.
Второй способ
Использовать утилиту nohup, которая запустит приложение с игнорированием сигналов потери связи (SIGHUP), что позволит продолжить выполнение приложения после выхода пользователя из системы.
вывод будет перенаправлен вместо консоли в файл nohup.out, который будет находиться в папке из которой производился запуск. Посмотреть вывод консоли можно командой:
tail -f nohup.out
nohup ping 127.0.0.1 &
В данном случае вернуться к приложению и получить управление нельзя. его можно только завершить командой kill.
Третий способ
Использовать утилиту start-stop-daemon, которая создана для запуска в фоне приложений, которые сами не умеют переходить в фон.
start-stop-daemon -S -b -x путь_и_имя_исполняемого_файла -m -p путь_и_имя_pid_файла
использованные параметры:
-S — запустить;
-b — запустить в фоне;
-x — полный путь и имя исполняемого файла;
-m — создать PID-файл с номером процесса;
-p — путь и имя PID-файла.
Если требуется запустить программу с параметрами, то параметры указываются в конце, после двойного тире (подробнее — в примере).
start-stop-daemon -S -b -x /bin/ping -m -v -p /run/ping.pid — -I eth0 127.0.0.1
В данном примере мы запускаем утилиту ping с параметрами (-I eth0 127.0.0.1) и создаем PID-файл (/run/ping.pid).
Для остановки программы использутся другие параметры:
start-stop-daemon -K -x путь_и_имя_исполняемого_файла
start-stop-daemon -K -p путь_и_имя_pid_файла
использованные параметры:
-K — остановить;
-x — найти по имени запущенной программы;
-p — найти по PID-файлу .
start-stop-daemon -K -p /run/ping.pid
Находим номер процесса, записанный в файл /run/ping.pid и останавливаем его.
Более правильно всегда использовать PID-файлы, потому что имя запускаемой программы не всегда равно имени запущенного процесса.
Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности
Быть уверенным в своей IT-инфраструктуре — это быть уверенным в завтрашнем дне.
Источник
START-STOP-DAEMON¶
НАЗВАНИЕ¶
start-stop-daemon — обеспечение запуска и остановки демонов
СИНТАКСИС¶
start-stop-daemon -S , -start демон [—] [аргументы ] start-stop-daemon -K , -stop демон start-stop-daemon -s , -signal signal демон
ОПИСАНИЕ¶
Утилита start-stop-daemon обеспечивает надежный метод запуска и остановки демонов, а также передачи им сигнала. Если не используется ни опция -K , -stop, ни -s , -signal, подразумевается, что демон необходимо запустить. Если демон не запускается самостоятельно в фоновом режиме и не создает файл идентификатора процесса, это может безопасно выполнить start-stop-daemon.
Если start-stop-daemon используется для той или иной службы OpenRC, OpenRC может проверить, работает ли демон. Если нет, то служба помечается как аварийно остановленная.
Ниже приводятся опции, служащие для указания демона и способа его запуска или остановки:
-x , -exec демон
Запускаемый или останавливаемый демон. Если эта опция не указана, то будет использован первый аргумент вне опций.
-p , -pidfile файл идентификатора процесса
При запуске демона он за разумное время должен создать рабочий файл идентификатора процесса. При остановке будут остановлены только процессы, перечисленные в файле идентификатора.
-n , -name имя
Определяет демон по имени процесса, а не по файлу идентификатора или по имени исполняемого файла.
-i , -interpreted
При выборе процесса по имени необходимо убедиться, что ему соответствует подходящий интерпретатор. Как только, например, запускается демон foo, start-stop-daemon ищет процесс. Если интерпретируемый демон изменяет свое имя процесса, это не будет работать.
-u , -user пользователь [:группа ]
Запускает демон от пользователя и соответственно обновляет значение $HOME или останавливает демоны, принадлежащие пользователю. При желании вы можете добавить и группу.
-t , -test
Только отображает сведения о действии/-ях, которые должны быть выполнены, ничего не делая. Возвращается то же значение, что и в случае действительно запуска и отработки команды.
-v , -verbose
Отображает сведения о действии/-ях непосредственно перед его/их выполнением.
-P , -progress
Отображает ход выполнения в консоли: одна точка обозначает секунду ожидания.
Следующие опции используются только при запуске демонов:
-a , -startas имя
Заменяет имя процесса демона на указанное имя. Это заменит лишь первый аргумент, передаваемый демону.
-b , -background
Принудительно запускает демон в фоновом режиме. Некоторые демоны не создают идентификационных файлов — их удобно запускать в фоне и использовать эту опцию в связке с -m , -make-pidfile для создания рабочего файла идентификатора.
-d , -chdir путь
Перед запуском демона изменяет рабочий каталог на указанный.
-r , -chroot путь
Перед запуском демона выполняет chroot в каталоге по указанному пути. Другие пути, например, путь доступа к демону, адрес нового корневого каталога root и файла идентификатора процесса, должны быть относительными к chroot.
-c , -chuid пользователь
Аналогично опции -u , -user.
-e , -env VAR=VALUE
Присваивает переменной окружения VAR значение VALUE.
-g , -group группа
Запускает демон в группе.
-k , -umask режим
Задает маску файла демона.
-m , -make-pidfile
Сохраняет идентификатор процесса демона в файле, указанном в опции -p, -pidfile. Имеет смысл только применительно к демонам, запущенным в основном режиме, которые принудительно переводятся в фоновый режим опцией —b, -background.
-I , -ionice класс [:данные ]
Изменяет приоритет ввода-вывода для демона. Аргумент класс может иметь значение 0 — нет, 1 — real time (приоритетный доступ), 2 — best effort (приоритет определяется планировщиком) и 3 — idle ( доступ только тогда, когда другие процессы не требуют ввода/вывода). Аргумент данные может принимать значения от 0 до 7 включительно.
-N , -nice уровень
Изменяет приоритет запуска демона.
-1 , -stdout журнал
При запуске с опцией -background перенаправляет стандартный вывод процесса в журнал. В качестве аргумента необходимо указывать абсолютный путь доступа к файлу, но относительный к пути, опционально заданному опцией -r , -chroot. Журнал может быть и именованным каналом.
-w , -wait время
После запуска ожидать указанное время (в миллисекундах), затем проверить, продолжает ли демон работу. Эта опция удобна для демонов, которые проверяют конфигурацию после ветвления или устранения «гонок», когда файл идентификатора записывается после ветвления процесса.
-2 , -stderr журнал
Эта опция аналогична -1, -stdout, но со стандартным выводом ошибок.
Следующие опции используются только для остановки демонов:
-R , -retry пауза | сигнал / пауза
Вы можете указать либо продолжительность паузы в секундах, либо несколько пар сигнал/пауза для расписания остановки демонов. Если опция не задана, будет использовано значение по умолчанию SIGTERM/5.
ОКРУЖЕНИЕ¶
С помощью переменной_SSD_NICELEVEL_ также можно устанавливать очередь запуска демонов, но приоритет будет иметь опция в командной строке.
Переменная SSD_STARTWAIT аналогична опции -w, -wait, описанной выше. /etc/rc.conf, start-stop-daemon ожидает проверки, продолжает ли демон работу.
ПРИМЕЧАНИЕ¶
Для синтаксического анализа опций start-stop-daemon использует getopt(3): этот инструмент позволяет принимать опцию с префиксом `—‘, останавливая обработку текущих опций на данном этапе. Все последующие аргументы передаются демону, который запускает соответствующие службы, и используются при обнаружении демона, который необходимо остановить или которому необходимо передать сигнал.
СМ. ТАКЖЕ¶
chdir(2), chroot(2), getopt(3), nice(2), rc_find_pids(3)
ОШИБКИ¶
Не обращаясь к файлу идентификатора процесса, start-stop-daemon не может остановить интерпретируемый демон, который уже не существует.
ИСТОРИЯ¶
Впервые start-stop-daemon был использован в Debian.
Настоящая реализация стала результатом полной переработки изначальной версии: процесс ищет код в библиотеке OpenRC (librc, -lrc), чтобы к нему могли обращаться другие программы.
Источник