Этот репозиторий содержит простой пример демона для Linux OS. Этот репозиторий также содержит примеры начальных сценариев.
Когда вы хотите создать супер простой демон, тогда это очень просто. Вы можете написать что -то подобное в C и назвать это daemon.c :
/* Compile this with gcc -o daemon daemon.c */
#include <unistd.h>
int main ( void )
{
while ( 1 ) {
/* TODO: do something usefull here ;-) */
sleep ( 1 );
}
} и напишите несколько супер простого файла Systemd Service с именем simple-daemon.service :
[Unit]
Description=Super simple daemon
[Service]
Type=simple
ExecStart=/usr/bin/daemon
[Install]
WantedBy=multi-user.target
И тогда вы можете запустить его в качестве Daemon Unix, но в таком демоне нет некоторых хороших функций, таких как файлы Reloadin Configure, логирование и т. Д. Этот репозиторий и источники могут помочь вам понять, как работает Unix Daemons.
Чтобы построить пример демона, у вас должны быть следующие инструменты
Чтобы построить пример Daemon, вы должны ввести следующие команды:
git clone https://github.com/jirihnidek/daemon.git
cd daemon
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ../
make
sudo make install
Вы можете проверить запуск Daemon из командной строки:
./bin/daemon
Но запуск приложения таким образом не работает за запуском Daemon. Посмотрите параметры и аргументы командной строки
Usage: ./bin/daemon [OPTIONS]
Options:
-h --help Print this help
-c --conf_file filename Read configuration from the file
-t --test_conf filename Test configuration file
-l --log_file filename Write logs to the file
-d --daemon Daemonize this application
-p --pid_file filename PID file used by daemonized app
Когда вы запустите ./bin/daemon с параметром --daemon или -d , тогда это станет настоящим демоном Unix. Но это не так, как в настоящее время начинаются демоны Unix. Для этой цели используются некоторые сценарии инициации или службы.
Когда вы используете дистрибуцию Linux с помощью SystemD, вы можете попробовать демон запуска, используя
systemctl start simple-daemon
systemctl status simple-daemon
systemctl reload simple-daemon
systemctl stop simple-daemon
ПРИМЕЧАНИЕ. Единистые файлы
simple-daemon.serviceиforking-daemon.serviceкопируются в Directory/usr/lib/systemd/systemво время установки с использованием командыmake install.
Когда вы используете Redhat 4/5/6 или Centos, вы можете попытаться использовать сценарий init:
cp daemon.init /etc/rc.d/init.d/daemond
Тогда должно быть возможно контролировать демон, используя:
service daemon start
service daemon status
service daemon reload
service daemon stop