ที่เก็บนี้มีตัวอย่างง่ายๆของ daemon สำหรับ Linux OS ที่เก็บนี้ยังมีตัวอย่างของสคริปต์เริ่มต้น
เมื่อคุณต้องการสร้าง daemon ง่าย ๆ มันก็ง่ายมาก คุณสามารถเขียนอะไรแบบนี้ใน 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 Systemd ที่เรียกว่า simple-daemon.service :
[Unit]
Description=Super simple daemon
[Service]
Type=simple
ExecStart=/usr/bin/daemon
[Install]
WantedBy=multi-user.target
จากนั้นคุณสามารถเรียกใช้เป็น Unix daemon แต่ daemon ดังกล่าวไม่มีคุณสมบัติที่ดีเช่นไฟล์การกำหนดค่า reloadin, Loing, ฯลฯ ที่เก็บและแหล่งข้อมูลนี้สามารถช่วยให้คุณเข้าใจวิธีการทำงานของ Unix Daemons
ในการสร้างตัวอย่างของ daemon คุณต้องมีเครื่องมือต่อไปนี้
ในการสร้างตัวอย่างของ 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 daemon จริง แต่นี่ไม่ใช่วิธีการเริ่มต้นของ Unix Daemons ในปัจจุบัน สคริปต์ init หรือไฟล์บริการบางไฟล์ใช้เพื่อจุดประสงค์นี้
เมื่อคุณใช้การกระจาย Linux โดยใช้ SystemD คุณสามารถลองเริ่ม Daemon โดยใช้
systemctl start simple-daemon
systemctl status simple-daemon
systemctl reload simple-daemon
systemctl stop simple-daemon
หมายเหตุ: ไฟล์หน่วย
simple-daemon.serviceและforking-daemon.serviceถูกคัดลอกไปยังไดเรกทอรี/usr/lib/systemd/systemระหว่างการติดตั้งโดยใช้คำสั่งmake install
เมื่อคุณใช้ Redhat 4/5/6 หรือ Centos คุณสามารถลองใช้สคริปต์ init:
cp daemon.init /etc/rc.d/init.d/daemond
จากนั้นควรเป็นไปได้ที่จะควบคุม daemon โดยใช้:
service daemon start
service daemon status
service daemon reload
service daemon stop