cron کیا ہے؟
cron ہر لینکس ڈسٹری بیوشن میں شامل وقت پر مبنی جاب شیڈولر ہے۔ یہ کمانڈز اور اسکرپٹس کو مقررہ اوقات، تاریخوں یا وقفوں پر خودکار طریقے سے چلاتا ہے — جو بیک اپس، لاگ روٹیشن، سرٹیفکیٹ کی تجدید، ڈیٹابیس کی صفائی، اور ایپلیکیشن شیڈولرز کو متحرک کرنے کے لیے بہترین ہے۔ اوبنٹو پر یہ شیڈولر cron.service نامی ایک بیک گراؤنڈ سروس کے طور پر چلتا ہے، اور آپ یہ متعین کرتے ہیں کہ اسے کیا چلانا چاہیے ایسی فائلوں میں جنہیں crontabs کہا جاتا ہے۔
یہ گائیڈ اوبنٹو 22.04/24.04 LTS پر فی صارف اور سسٹم وائڈ cron جابز، صحیح سنٹیکس، ماحول اور لاگنگ کو سنبھالنے کا طریقہ، اور شیڈول کیے گئے ٹاسکس کو منظم شدہ VPS یا کلاؤڈ سرور پر قابلِ اعتماد طریقے سے چلتے رکھنے کا احاطہ کرتی ہے۔
یہ تصدیق کریں کہ cron انسٹال شدہ اور چل رہا ہے
اوبنٹو پر، cron ڈیمن cron پیکج کے ذریعے فراہم کیا جاتا ہے اور عموماً پہلے سے ہی انسٹال شدہ ہوتا ہے۔ اس کی تصدیق کریں:
systemctl status cron
آپ کو Active: active (running) نظر آنا چاہیے۔ اگر پیکج موجود نہ ہو، تو اسے انسٹال اور فعال کریں:
sudo apt update && sudo apt install -y cron
sudo systemctl enable --now cron
crontab سنٹیکس کو سمجھنا
ہر cron جاب ایک واحد لائن ہوتی ہے جس میں وقت اور تاریخ کے پانچ فیلڈز ہوتے ہیں جن کے بعد چلانے والی کمانڈ آتی ہے:
# ┌───────────── minute (0–59)
# │ ┌───────────── hour (0–23)
# │ │ ┌───────────── day of month (1–31)
# │ │ │ ┌───────────── month (1–12)
# │ │ │ │ ┌───────────── day of week (0–7, where 0 and 7 are Sunday)
# │ │ │ │ │
# * * * * * command to execute
ہر فیلڈ یہ قبول کرتا ہے:
| آپریٹر | معنی | مثال |
|---|---|---|
* |
ہر قدر | * * * * * = ہر منٹ |
, |
ایک فہرست | 0,30 * * * * = :00 اور :30 پر |
- |
ایک رینج | 0 9-17 * * * = صبح 9 بجے سے شام 5 بجے تک ہر گھنٹے |
/ |
ایک قدم | */15 * * * * = ہر 15 منٹ |
چند عملی مثالیں:
0 2 * * * # every day at 02:00
*/5 * * * * # every 5 minutes
30 3 * * 1 # 03:30 every Monday
0 0 1 * * # midnight on the 1st of every month
0 8 * * 1-5 # 08:00 Monday–Friday
آپ پانچ فیلڈز کے بجائے یہ مختصر سٹرنگز بھی استعمال کر سکتے ہیں: @reboot، @hourly، @daily، @weekly، @monthly، اور @yearly۔ مثال کے طور پر، @reboot ایک جاب کو ہر بار جب سرور بوٹ ہوتا ہے ایک بار چلاتا ہے۔
فی صارف cron جاب بنانا
زیادہ تر ایپلیکیشن ٹاسکس کو ایک عام صارف کے طور پر چلنا چاہیے، root کے طور پر نہیں۔ اپنے صارف کے crontab کو اس سے ایڈٹ کریں:
crontab -e
پہلی بار، آپ سے ایک ایڈیٹر منتخب کرنے کو کہا جائے گا (nano سب سے آسان ہے)۔ ایک جاب شامل کریں — مثال کے طور پر، ہر روز رات 1:30 بجے ایک بیک اپ اسکرپٹ چلائیں اور آؤٹ پٹ کو لاگ کریں:
30 1 * * * /home/deploy/scripts/backup.sh >> /home/deploy/logs/backup.log 2>&1
محفوظ کریں اور باہر نکلیں۔ cron نیا شیڈول فوراً انسٹال کر دیتا ہے — کسی ری اسٹارٹ کی ضرورت نہیں۔ اپنی جابز کو crontab -l سے درج کریں، اور ان سب کو crontab -r سے ہٹائیں (احتیاط سے استعمال کریں)۔
>> file 2>&1 کا حصہ معیاری آؤٹ پٹ اور خرابیاں دونوں کو ایک لاگ فائل میں شامل کرتا ہے۔ یہ اہم ہے: ڈیفالٹ طور پر cron آؤٹ پٹ کو لوکل صارف کو ای میل کر دیتا ہے، جو آپ عموماً کبھی نہیں دیکھتے، اس لیے واضح لاگنگ ہی ناکامیوں کو ڈیبگ کرنے کا طریقہ ہے۔
سسٹم وائڈ جابز اور run-parts ڈائریکٹریز
root سطح اور پیکج شدہ جابز /etc/crontab اور /etc/cron.d/ میں رہتی ہیں۔ ان فائلوں میں وقت کے فیلڈز اور کمانڈ کے درمیان ایک اضافی فیلڈ — صارف نام — ہوتا ہے:
# m h dom mon dow user command
0 4 * * * root /usr/local/bin/cleanup.sh
عام معاملات کے لیے آپ کو کوئی شیڈول لکھنے کی بھی ضرورت نہیں۔ اوبنٹو جو کچھ آپ ان ڈائریکٹریوں میں ڈالتے ہیں اسے ایک مقررہ رفتار پر چلاتا ہے:
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
ایک قابلِ عمل اسکرپٹ (بغیر فائل ایکسٹینشن کے، chmod +x) کو /etc/cron.daily/ میں رکھیں اور یہ دن میں ایک بار چلے گا۔ یہ مینٹیننس اسکرپٹس کو شپ کرنے کا سب سے صاف ستھرا طریقہ ہے۔
ماحول اور PATH کے مسائل
کسی جاب کے "میرے شیل میں کام کرنے مگر cron میں نہ کرنے" کی سب سے عام وجہ ماحول ہے۔ cron ایک کم سے کم PATH (عام طور پر /usr/bin:/bin) کے ساتھ چلتا ہے اور آپ کی .bashrc یا profile کو لوڈ نہیں کرتا۔ دو حل:
- ہمیشہ بائنریز اور فائلوں کے لیے مطلق راستے استعمال کریں (
/usr/bin/php، نہ کہphp)۔ - crontab کے اوپر متغیرات سیٹ کریں:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=ops@example.com
SHELL=/bin/bash
*/10 * * * * cd /var/www/app && /usr/bin/php artisan schedule:run >> /var/log/app-cron.log 2>&1
نوٹ کریں کہ MAILTO="" تمام ای میل کو غیر فعال کر دیتا ہے؛ اسے کسی پتے پر سیٹ کرنا جاب آؤٹ پٹ وہاں بھیجتا ہے بشرطیکہ کوئی میلر کنفیگر ہو۔
ٹائم زونز
cron سرور کے سسٹم ٹائم زون کا استعمال کرتا ہے، آپ کے لوکل کا نہیں — جسے بھولنا آسان ہے جب آپ کی ٹیم ریاض میں ہو لیکن VPS بطور ڈیفالٹ UTC پر ہو۔ اسے چیک اور سیٹ کریں:
timedatectl # shows current time zone
sudo timedatectl set-timezone Asia/Riyadh
ٹائم زون تبدیل کرنے کے بعد، cron کو ری اسٹارٹ کریں تاکہ چلتی ہوئی جابز اسے اپنا لیں: sudo systemctl restart cron۔ اپنے سرور کو اندرونِ مملکت ہوسٹ کرنے کا مطلب ہے کہ یہ قدرتی طور پر ریاض کے وقت اور PDPL ڈیٹا ریزیڈنسی تقاضوں سے ہم آہنگ ہوتا ہے۔
جابز کی تصدیق اور ڈیبگنگ
اوبنٹو پر، cron سرگرمی سسٹم جرنل اور /var/log/syslog میں لاگ ہوتی ہے (ڈیفالٹ طور پر کوئی الگ /var/log/cron نہیں ہوتا)۔ ایگزیکیوشنز کو لائیو دیکھیں:
grep CRON /var/log/syslog | tail
journalctl -u cron --since "1 hour ago"
اگر کوئی جاب نہیں چل رہی، تو ترتیب سے یہ چیک کریں: cron سروس چل رہی ہے، لائن میں بالکل پانچ وقت کے فیلڈز ہیں (یا ایک @ سٹرنگ)، اسکرپٹ قابلِ عمل ہے، اور آپ کی لاگ فائل کمانڈ کا آؤٹ پٹ دکھاتی ہے۔ یہ ثابت کرنے کے لیے کہ ایک اسکرپٹ cron کے محدود ماحول میں کام کرتا ہے، اسے env -i /bin/bash -c '/path/to/script.sh' سے ٹیسٹ کریں۔
کون cron استعمال کر سکتا ہے اسے محدود کرنا
یہ کنٹرول کرنے کے لیے کہ کون سے صارفین crontabs انسٹال کر سکتے ہیں، /etc/cron.allow (ایک وائٹ لسٹ) یا /etc/cron.deny (ایک بلیک لسٹ) بنائیں۔ اگر /etc/cron.allow موجود ہو، تو صرف درج شدہ صارفین ہی crontab استعمال کر سکتے ہیں — مشترکہ سرور پر ایک سمجھدارانہ سکیورٹی اقدام۔
اسے Skyline Cloud پر قابلِ اعتماد طریقے سے چلائیں
ایک cron جاب اتنی ہی قابلِ بھروسہ ہوتی ہے جتنا وہ سرور جس پر یہ چلتی ہے۔ ایک Skyline Cloud VPS یا کلاؤڈ سرور پر، آپ کے شیڈول کیے گئے بیک اپس، رپورٹ جنریشن، اور تجدید کے ٹاسکس سعودی ڈیٹا سینٹرز میں ہوسٹ کیے گئے ہمیشہ آن رہنے والے انفراسٹرکچر پر چلتے ہیں، مقامی عربی سپورٹ اور PDPL/NCA سے ہم آہنگ ڈیٹا ریزیڈنسی کے ساتھ۔ اسے Skyline بزنس ای میل ہوسٹنگ کے ساتھ جوڑیں تاکہ ناکام جابز کے بارے میں MAILTO الرٹس واقعی آپ کی ٹیم تک پہنچیں۔
اندرونِ مملکت انفراسٹرکچر پر اپنے ورک لوڈز کو خودکار کرنے کے لیے تیار ہیں؟ اپنا Skyline Cloud اکاؤنٹ بنائیں اور منٹوں میں ایک VPS تعینات کریں۔

Comments
0 total · 0 threads