
למה טיימרים של systemd עדיפים על דמון cron
מהנדס טוען שדמון cron אינו הכלי הנכון למשימות מתוזמנות ב-2026, ומפרט מה עושים טיימרים של systemd טוב יותר: סביבה צפויה, היסטוריית הרצות גלויה ולוחות זמנים קריאים.
כל מי שמתזמן משימות ב-Linux נוטה לפנות ל-cron, והמילה הפכה לכינוי כללי לכל הרצה מתוזמנת. במאי 2026 טוען הכותב של tjll.net בבלוג שלו שב-2026 דמון cron ממשי — ובני דודיו המודרניים יותר — הוא הכלי הלא נכון, ושהטיימר של systemd ראוי ליותר חיבה מזו שהוא מקבל.
למה לא cron
ההתנגדויות שלו מעשיות ולא אידיאולוגיות. הגדרות $PATH עמומות מקשות לחזות את הרצת סקריפטים ב-cron. ה-stdout וה-stderr נעלמים לעיתים קרובות לחור שחור, או מגיעים למערכת הדואר של המארח, וזה כמעט אף פעם לא מה שרוצים. קשה לעקוב אחר היסטוריית ההרצות ולחקור אותה. והדקדוק של התזמון, שיש המתגאים בו, אינו קל לקריאה: ביטוי כמו `01,31 04,05 1-15 1,6 *` דורש מאמץ אמיתי לפענוח. טיימרים, הוא כותב, פותרים את כל הבעיות האלה ואף יותר.
שירות, טיימר ולוח זמנים
טיימר של systemd הוא סוג של unit שמתזמן unit אחר, בדרך כלל שירות. הדוגמה במאמר היא שירות עם סיכוי של אחד לעשר לכבות את המחשב, שאליו מצטרף קובץ טיימר בעל אותו גזע שם ב-/etc/systemd/system, שכן הגדרת Unit= כברירת מחדל בוחרת את ה-.service המתאים. הרצת ה-.timer מכניסה אותו לשעון אך אינה מפעילה את היעד; enable מעלה אותו בעת האתחול דרך יעד ההתקנה WantedBy=timers.target. שני פרטים מבלבלים אנשים: ExecStart אינו רץ דרך shell כברירת מחדל, כך שצינורות אינם פועלים כפי שנכתבו, והוא אינו יורש משתני סביבה מעבר לברירות המחדל של מנהל המערכת.
אירועי לוח שנה ומרווחי זמן
הקפיצה הרעיונית הגדולה ביותר מ-cron היא ש-systemd מציע שני סוגי לוח זמנים. האחד הוא אירוע לוח שנה מוכר — daily, או צורתו המלאה `*-*-* 00:00:00` — והשני הוא פרק זמן הנמדד מול אירוע קודם, למשל OnBootSec=1h עם OnUnitActiveSec=1h, שמריץ שעה לאחר האתחול ואחר כך שעה לאחר כל הרצה. הצורה השנייה מתאימה לעיתים קרובות לכוונה האמיתית: משימה שמנקה תיקייה זמנית מרוויחה מעט מהרצה מיד לאחר האתחול, ובוט שמתשאל API בדיוק כל חמש עשרה דקות לפי השעון יוצר קפיצת תעבורה שתזמון לפי מרווח זמן נמנע ממנה. המחבר מפנה תחילה למדריך systemd.time ולכלי systemd-analyze calendar, שמאמת ומסביר ביטויים ואף מפענח תווים כלליים קלאסיים של cron.
הוא מונה גם יכולות ש-cron אינו מציע: list-timers, שמדפיס טבלה אחת של מה ירוץ בהמשך ומה רץ לאחרונה; WakeSystem=, שמעיר מחשב בתרדמת כדי להריץ משימה; FixedRandomDelay= ו-RandomizedOffsetSec=, שמפזרים את ההרצות כדי להימנע מקפיצות "עדר דוהר"; ו-Persistent=, שמפעיל הרצה שהוחמצה מיד כשהטיימר פעיל שוב — שימושי לבדיקות של ניהול תצורה במחשב נייד שהיה כבוי. טיימרים ברמת המשתמש דרך systemctl --user תקפים באותה מידה, אם כי יעד ההתקנה צריך לעיתים להיות default.target. השעון עדיין חייב להיות מדויק, ו-timedatectl timesync-status מראה אם הוא כזה.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.