الاتصال بخادم VDS عبر SSH: PuTTY والطرفية والمفاتيح
دليل شامل للاتصال بخادم Linux VDS عبر SSH: PuTTY، الطرفية، المصادقة بالمفتاح، إنشاء قاعدة تصفية Path Panel، تغيير المنفذ ونصائح الأمان الأساسية.
إنشاء وإدارة المهام المجدولة في Linux باستخدام crontab: صياغة تعبيرات cron، أمثلة عملية، تسجيل المخرجات وتجنب الأخطاء الشائعة.
Cron هو مجدول المهام في Linux الذي يشغّل الأوامر والسكريبتات تلقائياً في أوقات محددة أو على فترات منتظمة. إنه ضروري لأتمتة المهام المتكررة مثل النسخ الاحتياطي وتنظيف السجلات والتحقق من التحديثات.
خدمة cron مثبتة وتعمل افتراضياً على معظم توزيعات Linux. تحقق من حالتها بـ systemctl status cron أو systemctl status crond.
يتكون كل cron job من خمسة حقول زمنية والأمر المراد تنفيذه:
* * * * * /مسار/الأمر
│ │ │ │ │
│ │ │ │ └── يوم الأسبوع (0-7، 0 و7 = الأحد)
│ │ │ └──── الشهر (1-12)
│ │ └────── يوم الشهر (1-31)
│ └──────── الساعة (0-23)
└────────── الدقيقة (0-59)
| الحرف | المعنى | مثال |
|---|---|---|
* | أي قيمة | * * * * * = كل دقيقة |
, | قيم متعددة | 1,15 * * * * = الدقيقة 1 و15 |
- | نطاق | 1-5 * * * * = الدقائق من 1 إلى 5 |
/ | خطوة | */5 * * * * = كل 5 دقائق |
# تشغيل كل دقيقة
* * * * * /usr/bin/script.sh
# تشغيل في بداية كل ساعة
0 * * * * /usr/bin/script.sh
# تشغيل يومياً في 02:30
30 2 * * * /usr/bin/backup.sh
# تشغيل كل اثنين في 08:00
0 8 * * 1 /usr/bin/weekly-report.sh
# تشغيل في الأول من كل شهر منتصف الليل
0 0 1 * * /usr/bin/monthly-cleanup.sh
# تشغيل كل 5 دقائق
*/5 * * * * /usr/bin/check-service.sh
# تشغيل أيام العمل (الاثنين-الجمعة) في 09:00
0 9 * * 1-5 /usr/bin/workday-task.sh
# تشغيل كل 6 ساعات
0 */6 * * * /usr/bin/sync.sh
@reboot # مرة واحدة عند بدء تشغيل النظام
@yearly # مرة في السنة (0 0 1 1 *)
@monthly # مرة في الشهر (0 0 1 * *)
@weekly # مرة في الأسبوع (0 0 * * 0)
@daily # مرة في اليوم (0 0 * * *)
@hourly # مرة في الساعة (0 * * * *)
# تحرير crontab المستخدم الحالي
crontab -e
# تحرير crontab مستخدم محدد (يتطلب root)
crontab -u اسم_المستخدم -e
# عرض crontab الحالي
crontab -l
# حذف crontab (استخدم بحذر!)
crontab -r
الأمر crontab -r يحذف جميع مهام cron ولا يمكن التراجع عنه. احتفظ بنسخة احتياطية أولاً: crontab -l > crontab_backup.txt.
تستخدم مهام cron على مستوى النظام مجلدات /etc/cron*:
# هيكل المجلدات
/etc/crontab # ملف crontab الرئيسي للنظام
/etc/cron.d/ # ملفات cron للتطبيقات
/etc/cron.hourly/ # سكريبتات تعمل كل ساعة
/etc/cron.daily/ # سكريبتات تعمل يومياً
/etc/cron.weekly/ # سكريبتات تعمل أسبوعياً
/etc/cron.monthly/ # سكريبتات تعمل شهرياً
# سجلات cron على Debian/Ubuntu
sudo tail -f /var/log/syslog | grep CRON
# على RHEL/CentOS
sudo tail -f /var/log/cron
# باستخدام journald
sudo journalctl -u cron -f
# إعادة توجيه stdout و stderr إلى ملف
30 2 * * * /usr/bin/backup.sh >> /var/log/backup.log 2>&1
# تسجيل الأخطاء فقط
30 2 * * * /usr/bin/backup.sh 2>> /var/log/backup-errors.log
# إخفاء جميع المخرجات
30 2 * * * /usr/bin/backup.sh > /dev/null 2>&1
اضبط logrotate لتدوير ملفات السجل حتى لا تنمو بلا حدود.
لا يرث cron متغيرات بيئة shell المستخدم. عرّف PATH والمتغيرات الأخرى صراحةً:
# أضف في بداية crontab
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
SHELL=/bin/bash
# أو استخدم المسارات الكاملة في الأوامر
30 2 * * * /usr/bin/python3 /home/user/script.py
# منح صلاحية التنفيذ للسكريبت
chmod +x /home/user/backup.sh
# التحقق من الصلاحيات
ls -la /home/user/backup.sh
# تحديد مجلد العمل صراحةً في مهمة cron
30 2 * * * cd /var/www/html && php artisan schedule:run
Cron أحد الأدوات الأساسية في إدارة نظام Linux. مع الصياغة الصحيحة وإدارة متغيرات البيئة والتسجيل، يمكنك بناء أتمتة موثوقة. راجع مهامك بانتظام باستخدام crontab -l وراقب ملفات السجل للكشف المبكر عن المشاكل.
الأسباب الأكثر شيوعاً: السكريبت لا يملك صلاحية التنفيذ (chmod +x)، متغير PATH غير معرّف (cron يعمل في بيئة مقيدة)، السكريبت يستخدم مسارات نسبية بدلاً من مسارات مطلقة، أو خدمة cron لا تعمل. تحقق من /var/log/syslog أو /var/log/cron لرسائل الخطأ.
أعد توجيه مخرجات المهمة إلى ملف سجل: '30 2 * * * /script.sh >> /var/log/script.log 2>&1'. ثم راقبه بـ 'tail -f /var/log/script.log'. يمكنك أيضاً التحقق من سجلات cron بـ 'sudo grep CRON /var/log/syslog'.
استخدم الاختصار @reboot: '@reboot /home/user/startup.sh'. سيتم تشغيل هذا الأمر في كل مرة يبدأ فيها الخادم. إنشاء خدمة systemd هو أيضاً بديل أكثر موثوقية.
أضف 'MAILTO=""' في بداية ملف crontab. أو أضف '> /dev/null 2>&1' لكل مهمة لإخفاء جميع المخرجات.
دليل شامل للاتصال بخادم Linux VDS عبر SSH: PuTTY، الطرفية، المصادقة بالمفتاح، إنشاء قاعدة تصفية Path Panel، تغيير المنفذ ونصائح الأمان الأساسية.
دليل خطوة بخطوة للاتصال بـ Windows Server VDS عبر RDP: الإعداد الكامل، تفعيل NLA للأمان، إنشاء قاعدة تصفية Path Panel واستكشاف الأخطاء وإصلاحها.
تغيير نظام تشغيل خادم VDS عبر لوحة REXE: نصائح النسخ الاحتياطي قبل التثبيت، توزيعات Linux المدعومة وإصدارات Windows Server المتاحة للتثبيت الآن.