Este repositório contém um exemplo simples de daemon para o sistema operacional Linux. Este repositório também contém exemplos de scripts iniciais.
Quando você deseja criar daemon super simples, é muito fácil. Você pode escrever algo assim em C e chamá -lo de 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 );
}
} e escreva algum arquivo de serviço Systemd super simples chamado simple-daemon.service :
[Unit]
Description=Super simple daemon
[Service]
Type=simple
ExecStart=/usr/bin/daemon
[Install]
WantedBy=multi-user.target
E então você pode executá -lo como daemon Unix, mas esse daemon não possui alguns recursos interessantes, como recarregar arquivos de configuração, loging etc. Este repositório e fontes podem ajudá -lo a entender como os daemons do Unix funcionam.
Para construir um exemplo do daemon, você precisa ter as seguintes ferramentas
Para criar um exemplo de daemon, você deve digitar os seguintes comandos:
git clone https://github.com/jirihnidek/daemon.git
cd daemon
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ../
make
sudo make install
Você pode testar Daemon em execução da linha de comando:
./bin/daemon
Mas executar o aplicativo dessa maneira não está em execução Daemon. Vamos dar uma olhada nos parâmetros e argumentos da linha de comando
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
Quando você executar ./bin/daemon com parâmetro --daemon ou -d , ele se tornará daemon Unix real. Mas não é assim, como os daemons do Unix são iniciados hoje em dia. Alguns scripts init ou arquivos de serviço são usados para esse fim.
Quando você usa a distribuição do Linux usando o Systemd, você pode tentar iniciar o daemon usando
systemctl start simple-daemon
systemctl status simple-daemon
systemctl reload simple-daemon
systemctl stop simple-daemon
NOTA: Os arquivos da unidade
simple-daemon.serviceeforking-daemon.servicesão copiados para o diretório/usr/lib/systemd/systemdurante a instalação usando o comandomake install.
Quando você usa o Redhat 4/5/6 ou o CentOS, pode tentar usar o script init:
cp daemon.init /etc/rc.d/init.d/daemond
Então deve ser possível controlar o daemon usando:
service daemon start
service daemon status
service daemon reload
service daemon stop