یکی از روشای پرسیستنس توی لینوکس استفاده از فایلای socket , service هستش
حقیقتا یک service unit با پسوند .sservice مشخص میکنه که یه پردازش باید چطوری اجرا بشه و مدیریتش چطور باشه و ...
مثلا:
[Unit]
Description=System Update Monitor
[Service]
ExecStart=/usr/local/bin/updater
Restart=always
[Install]
WantedBy=multi-user.target
باید این فایل داخل مسیر /etc/systemd/system/ باشه و برای فعال سازیش میتونیم از دستور :
systemctl enable updater.service
برای اجراش شدنش اجرا کنیم.
یکی از روش پیشرفته ترش socket activation هستش که از فایل .socket به systemd اجازه میده به جای سرویس خودش روی یه سوکت listen کنه تا وقتی اتفاقی افتاد سرویس مربوطه اجرا کنه مثلا:
[Socket]
ListenStream=5555
Accept=no
[Install]
WantedBy=sockets.target
و بعدش یه سرویس میسازیم برای اجرا شدن اون وقتی سوکت فعال میشه:
[Unit]
Description=Healthcheck Service
[Service]
ExecStart=/usr/local/bin/healthcheck.sh
StandardInput=socket
StandardOutput=socket
StandardError=socket
اگه اسم هایی که براشون انتخاب میکنیم هم نام باشن مثل mmd.socket , mmd.service بهتره چون systemd به صورت پیش فرض هم نام هارو pair میکنه
systemctl enable mmd.socket
systemctl start mmd.socket