شرح الحقول واحدًا تلو الآخر
| الحقل | القيمة | المعنى |
|---|---|---|
| الدقيقة | 55 | 55 |
| الساعة | 23 | 23 |
| يوم الشهر | 28-31 | من 28 إلى 31 |
| الشهر | * | كل شهر |
| يوم الأسبوع | * | كل أيام الأسبوع |
أمثلة جاهزة للنسخ
Linux crontab
# crontab -e
# runs on days 28-31, but the command only fires when tomorrow is the 1st
55 23 28-31 * * [ "$(date -d tomorrow +\%d)" = "01" ] && /usr/local/bin/my-job.sh >> /var/log/my-job.log 2>&1
Kubernetes CronJob
apiVersion: batch/v1
kind: CronJob
metadata:
name: my-job
spec:
schedule: "55 23 28-31 * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: my-job
image: busybox:1.36
command: ["sh", "-c", "date; echo Hello from cron"]
GitHub Actions
on:
schedule:
- cron: '55 23 28-31 * *' # always UTC
تحسب GitHub Actions الجداول بتوقيت UTC، ولا تقبل الاختصارات مثل @daily، ولا تشغّل سير العمل أكثر من مرة كل 5 دقائق، وقد يتأخر التشغيل في أوقات الضغط العالي.
صيغ بديلة شائعة
اضغط على أي تعبير لتحميله في الأداة أعلاه.
| تعبير الكرون | الجدول الزمني |
|---|---|
| في تمام الساعة 10:00 م، من اليوم 28 إلى اليوم 31 من الشهر. | |
| في تمام الساعة 12:05 ص، في اليوم 1 من الشهر. | |
| في تمام الساعة 11:55 م، من اليوم 28 إلى اليوم 31 من الشهر، في أشهر مارس، يونيو، سبتمبر وديسمبر فقط. | |
| في تمام الساعة 12:00 ص، من اليوم 28 إلى اليوم 31 من الشهر. |
الأسئلة الشائعة
ماذا يعني التعبير 55 23 28-31 * * في الكرون؟
في تمام الساعة 11:55 م، من اليوم 28 إلى اليوم 31 من الشهر. الحقول الخمسة هي: الدقيقة 55، الساعة 23، يوم الشهر 28-31، الشهر *، يوم الأسبوع *.
كيف أشغّل مهمة كرون في اليوم الأخير من كل شهر في لينكس؟
نفّذ الأمر crontab -e، وأضف الأسطر الواردة في مثال كرون تاب في هذه الصفحة، ثم احفظ الملف واخرج. استخدم المسارات الكاملة، ووجّه المخرجات إلى ملف سجل، وتأكّد من التنفيذ بالأمر grep CRON /var/log/syslog.
متى سيعمل التعبير 55 23 28-31 * * في المرة القادمة؟
يعتمد ذلك على الوقت الحالي وعلى المنطقة الزمنية للجهاز الذي يشغّل cron. تعرض الحاسبة في هذه الصفحة مواعيد التنفيذ الخمسة القادمة بتوقيتك المحلي، أما على الخادم فيستخدم cron المنطقة الزمنية للنظام، وغالبًا ما تكون UTC.
كيف أشغّل مهمة في اليوم الأخير من الشهر في Kubernetes أو GitHub Actions؟
كلاهما يقبل صيغة الكرون القياسية فقط، لذا اضبط الجدول على الأيام 28-31 واجعل أول خطوة في المهمة هي التحقق نفسه: [ "$(date -d tomorrow +%d)" = "01" ] || exit 0. ولا تحتاج العلامة % إلى تهريب داخل السكربت أو ملف YAML، وعلى macOS وأنظمة BSD استخدم date -v+1d +%d بدلًا من ذلك. وقد يتأخر بدء التشغيلات المجدولة في GitHub Actions، فإذا بدأ تشغيل الساعة 23:55 بعد منتصف الليل فسيفشل التحقق؛ لذا اختر هناك موعدًا أبكر مثل 0 22 28-31 * *.