← شروع آموزش

WIUNIX ACADEMY

زمان‌بندی با systemd timer؛ نوبت ازدست‌رفته و اجرای تکراری رو مدیریت کن

صفحهٔ 4 از 4؛ قبل از ادامه، مراحل قبلی و چیزهایی رو که لازم داری مرور کن.

آموزش متناسب با محیط تو

کجا اجرا می‌کنی؟

سیستم‌عامل و نسخهٔ سرورت رو انتخاب کن تا مراحل، دستورها و راه‌حل‌های همون محیط رو ببینی.

Manjaro rollingبررسی‌شده با مستندات رسمی ·

آموزش متناسب با مقادیر تو

تنظیمات این آموزش

مقادیر نمونه رو با مشخصات سرورت عوض کن تا متن و دستورها با هم تغییر کنن. رمز، کلید خصوصی و توکن اینجا وارد نکن. مقدارها فقط توی همین زبانه می‌مونن و به سرور یا لینک اشتراک‌گذاری فرستاده نمی‌شن. قبل از اجرا، DNS، گواهی‌ها و تنظیمات دسترسی شبکه رو روی سرورت بررسی کن.

اگر آی‌پی، دامنه یا پورت‌های نمونه با سرورت فرق دارن، بخش تنظیمات پایین رو باز کن. مقدارها رو عوض کن و «اعمال در آموزش» رو بزن؛ بعد دستورهای تازه رو کپی کن.

تنظیم مقادیر برای محیط من3 مقدار قابل‌تغییر
12

قدم بعدی

جایگزین فاصله‌ای رو بررسی و فعال کن

فایل تغییرکردهٔ نمونه رو دوباره بررسی کن، مدیر سرویس رو از تغییر آگاه کن و timer رو شروع کن. روی میزبانی که مدتی روشن بوده، شروع وابسته به زمان بوت ممکنه بلافاصله اتفاق بیفته. نوبت بعدی و لاگ رو با فاصله از چرخهٔ سرویس تطبیق بده؛ دیگر منتظر زمان‌بندی روزانهٔ UTC نباش.

این دو روش رو بدون قصد روشن ترکیب نکن. چند شرط زمان در timer معمولاً مسیرهای جایگزینِ تحریک هستن، نه شرط‌هایی که باید هم‌زمان برقرار بشن. برای همین در این تمرین کل فایل رو عوض کردیم تا زمان‌بندی قبلی ناخواسته باقی نمونه.

bash

ترمینال میزبان آزمایشی با دسترسی مجاز

sudo systemd-analyze verify '/etc/systemd/system/academy-daily-marker.service' '/etc/systemd/system/academy-daily-marker.timer' || exit 1
sudo systemctl daemon-reload || exit 1
sudo systemctl enable --now 'academy-daily-marker.timer' || exit 1
systemctl is-enabled --quiet 'academy-daily-marker.timer' || exit 1
systemctl is-active --quiet 'academy-daily-marker.timer' || exit 1
systemctl list-timers --all 'academy-daily-marker.timer'
systemctl show 'academy-daily-marker.timer' -p ActiveState -p SubState -p NextElapseUSecMonotonic
از کجا بفهمم درست انجام شده؟

timer از فایل فاصله‌ای استفاده می‌کنه و نوبت بعدی با چرخهٔ شروع و پایان سرویس می‌خونه.

13

قدم بعدی

زمان‌بندی تقویمی رو برگردون یا نمونه رو غیرفعال نگه دار

اگر جایگزین فاصله‌ای رو امتحان کردی، timer و سرویس بی‌خطر نمونه رو متوقف کن، فقط فایل تقویمی ذخیره‌شده رو برگردون و بعد از بررسی دوباره بارگذاریش کن. اینجا فقط ثبت فایل تمرینی قطع می‌شه؛ برنامهٔ واقعی به روش توقف خودش نیاز داره. سابقهٔ Persistent باقی می‌مونه، پس بعد از فعال‌شدن ممکنه اجرای جبرانی ببینی.

اگر تمرین تموم شده، می‌تونی با پنل توقف قبلی timer رو غیرفعال نگه داری و فایل‌های مشخص، داده و لاگ رو تا پایان بازبینی حفظ کنی. عیب‌یابی زمان‌بندی جای پاک‌کردن دادهٔ برنامه یا پوشه‌های کلی سیستم نیست. اگر بعداً تصمیم به حذف همین timer گرفتی، روش رسمی پاک‌سازی وضعیت systemd رو فقط برای همین واحد به کار ببر.

bash

ترمینال میزبان آزمایشی با دسترسی مجاز

sudo systemctl disable --now 'academy-daily-marker.timer' || exit 1
sudo systemctl stop 'academy-daily-marker.service' || exit 1
sudo test -f '/etc/systemd/system/academy-daily-marker.timer.calendar-backup' || exit 1
sudo cp -p -- '/etc/systemd/system/academy-daily-marker.timer.calendar-backup' '/etc/systemd/system/academy-daily-marker.timer' || exit 1
sudo systemd-analyze verify '/etc/systemd/system/academy-daily-marker.timer' || exit 1
sudo systemctl daemon-reload || exit 1
sudo systemctl enable --now 'academy-daily-marker.timer' || exit 1
systemctl is-enabled --quiet 'academy-daily-marker.timer' || exit 1
systemctl is-active --quiet 'academy-daily-marker.timer' || exit 1
systemctl list-timers --all 'academy-daily-marker.timer'
از کجا بفهمم درست انجام شده؟

زمان‌بندی تقویمیِ ذخیره‌شده برگشته و منتظر است، یا آگاهانه نمونه رو غیرفعال نگه داشتی و شواهدش باقی مونده.

چه وقت کار واقعی برای زمان‌بندی آماده است؟

خود کار رو جدا از زمان‌بندی بسنج: یک اجرای دستی موفق، اجرای تکراری بی‌ضرر و یک نوبت واقعی timer رو ببین و نسخهٔ نصب‌شدهٔ systemd، مدت واقعی و نتیجهٔ برنامه رو ثبت کن. قطع و بازیابی رو فقط در محیط آزمایشی مناسب تمرین کن. دستورهای این راهنما با منابع اصلی تطبیق داده شده‌اند؛ ادعای اجرای عملی روی همهٔ توزیع‌ها یا میزبان تو نداریم.

قبل از استفادهٔ واقعی روشن کن نوبت ازدست‌رفته چه معنایی داره، تکرار کار بی‌خطره یا نه، ثبت نیمه‌کاره چطور بازیابی می‌شه، کار چقدر اجازه داره طول بکشه و شکست چطور به اپراتور می‌رسه. timer محلی و کد خروج صفر جای این تصمیم‌های برنامه رو نمی‌گیرن. بعد از روشن‌شدن این‌ها، برای محدودکردن دسترسی فایل‌ها می‌تونی سراغ راهنمای جداگانهٔ سخت‌سازی systemd بری.

منابع این آموزش

منابع رسمی

بالای صفحه می‌بینی که هر محیط چطور بررسی شده. بررسی مستندات به معنی اجرای عملی همهٔ نسخه‌ها نیست.

ادامهٔ مسیر

قدم بعدی تو

همهٔ آموزش‌های آکادمی ↗