يحتوي هذا المستودع على مثال بسيط على الخفي لنظام التشغيل Linux. يحتوي هذا المستودع أيضًا على أمثلة لبدء البرامج النصية.
عندما ترغب في إنشاء خفي بسيط للغاية ، يكون الأمر سهلاً للغاية. يمكنك كتابة شيء مثل هذا في 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 );
}
} واكتب بعض ملف خدمة Super Systemd Simple Simple يسمى simple-daemon.service :
[Unit]
Description=Super simple daemon
[Service]
Type=simple
ExecStart=/usr/bin/daemon
[Install]
WantedBy=multi-user.target
وبعد ذلك ، يمكنك تشغيله كـ Unix Daemon ، لكن هذا الخفي لا يحتوي على بعض الميزات الرائعة مثل ملفات إعادة تكوين RELOADIN ، وتسجيلها ، وما إلى ذلك. يمكن أن يساعدك هذا المستودع والمصادر على فهم كيفية عمل Daemons UNIX.
لبناء مثال على الخفيون الذي يجب أن يكون لديك أدوات متابعة
لبناء مثال على الخفي ، عليك كتابة الأوامر التالية:
git clone https://github.com/jirihnidek/daemon.git
cd daemon
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ../
make
sudo make install
يمكنك اختبار تشغيل الخفي من سطر الأوامر:
./bin/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
عندما -d --daemon ./bin/daemon ولكن هذا ليس هو الطريق ، كيف يتم البدء في أيام الخواص يونيكس الآن. يتم استخدام بعض البرامج النصية init أو ملفات الخدمة لهذا الغرض.
عند استخدام توزيع Linux باستخدام SystemD ، يمكنك محاولة بدء تشغيل الخفي باستخدام
systemctl start simple-daemon
systemctl status simple-daemon
systemctl reload simple-daemon
systemctl stop simple-daemon
/usr/lib/systemd/system:make installنسخ وحدة الوحدةsimple-daemon.serviceforking-daemon.service
عند استخدام 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