از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
اجرای وظایف دوره ای در Node با node-cronCron یک ابزار برنامه ریزی است که به صورت شبح اجرا می شود process در پس زمینه سیستم های یونیکس مانند این برای اجرای وظایف دوره ای بسیار محبوب است، که می تواند هر چیزی باشد که شما انتخاب می کنید، مانند شروع یک backup یا پاک کردن داده ها از پایگاه داده از طریق خط فرمان می توانید وظایف را به Cron اضافه کنید…
سرفصلهای مطلب
کرون چیست؟
کرون یک ابزار برنامه ریزی است که به صورت دیمون اجرا می شود process در پس زمینه سیستم های یونیکس مانند این برای اجرای وظایف دوره ای بسیار محبوب است، که می تواند هر چیزی باشد که شما انتخاب می کنید، مانند شروع یک backup یا پاک کردن داده ها از پایگاه داده
می توانید از طریق خط فرمان با استفاده از crontab -e
فرمان با استفاده از -e
آرگومان آن را در حالت ویرایش قرار می دهد و ویرایشگر پیش فرض شما را باز می کند که در آن می توانید کار را اضافه کنید. سینتکس یک دستور به شکل زیر است:
1 2 3 4 5 (USER) /path/to/command arg1 arg2
اعداد 1-5 نشان دهنده افزایش زمان های مختلفی است که می توانید برای برنامه ریزی کار مشخص کنید. جزئیات بیشتر در زیر:
- 1 دقیقه (0-59)
- 2 ساعت (0-23)
- 3: روز (0-31)
- 4: ماه (0-12، جایی که 12 دسامبر است)
- 5: روز هفته (0-7، جایی که یکشنبه 0 یا 7 است)
این USER
آرگومان اختیاری است و برای تعیین اینکه دستور باید به عنوان کدام کاربر اجرا شود استفاده می شود. شما همچنین می توانید کاربر را با استفاده از -u
گزینه. گزینه ها و تغییرات بسیار بیشتری در پارامترهای زمان بندی وجود دارد، اما ما در اینجا به جزئیات بیشتری نمی پردازیم. منابع زیاد دیگری نیز وجود دارد روی اینترنت که در آن می توانید این جزئیات را پیدا کنید.
در اینجا یک مثال ساده از روش برنامه ریزی یک اسکریپت برای اجرای Cron آورده شده است:
45 17 3 * * /path/to/script.sh
سپس کرون این اسکریپت را در ساعت 5:45 بعد از ظهر اجرا می کند روی روز سوم هر ماه اگرچه نحو ممکن است در ابتدا کمی گیج کننده باشد، اما در واقع یک روش بسیار قدرتمند برای برنامه ریزی کارهای تکراری است. این قالب توسط بسیاری از برنامه ها و ابزارهای کمکی برای تعیین schedules.dq4 پذیرفته شده است
node-cron
چیست؟
ابزار Cron مترادف با زمان بندی وظایف شده است، که چگونه است node-cron
نام خود را گرفت. در واقع از ابزار Cron در زیر آن استفاده نمی کند یا با آن ارتباط برقرار نمی کند، بلکه به سادگی با استفاده از Node، وظایف دوره ای را برای شما برنامه ریزی و اجرا می کند. setTimeout()
تابع. این کار را با تجزیه برنامه فرمت Cron که شما مشخص کردهاید انجام میدهد، تشخیص میدهد که «تیک» بعدی چه زمانی باید باشد، و زمانبندی را بر این اساس تنظیم میکند.
روش استفاده از آن
برای استفاده node-cron
، باید یک تابع را برنامه ریزی کنید تا به صورت برنامه ریزی شده اجرا شود، که در واقع ممکن است برای شما راحت تر از به هم ریختن خط فرمان باشد. یک تابع ساده را می توان به صورت زیر برنامه ریزی کرد:
var cron = require('cron');
var job = new cron.CronJob('* * * * *', function() {
console.log('Function executed!');
}, null, true);
هنگام اجرای این کد، متن “تابع اجرا شد!چاپ شده به console هر دقیقه یک بار
حتی میتوانید کمی جذابتر شوید و منطقه زمانی که وظیفه باید در آن اجرا شود را مشخص کنید. یا، گزینه دیگر، گفتن است node-cron
تا هنوز کار را شروع نکنم به این ترتیب می توانید کار را مقداردهی اولیه کنید و سپس از آن استفاده کنید .start()
و .stop()
روش ها فقط زمانی که به آن نیاز دارید. برای مشاهده لیست کامل پارامترها و گزینه ها، به مستندات کامل مراجعه کنید.
مزایا و معایب
من شخصاً خیلی دوست دارم node-cron
به این دلیل که به راحتی می توانید کدها را برنامه ریزی کنید تا اجرا شوند. و از آنجایی که اجرا می شود روی Node، می توانید از آن استفاده کنید روی هر سیستمی که از Node (مانند ویندوز) پشتیبانی می کند و نه فقط سیستم های مشابه یونیکس. بنابراین، برای هر کاری که از آن استفاده میکنید، کد نسبت به زمانی که مستقیماً از Cron استفاده میکرد، مستقلتر از سیستم است.
بزرگترین نقطه ضعف، به نظر من، این است که از آنجایی که از Cron در زیر آن استفاده نمیکند، ما آن چنان پایداری را که در غیر این صورت با Cron داشتیم، نداریم. منظور من از این است روی با راه اندازی مجدد سیستم، “کار” ما دیگر اجرا نمی شود. در عوض، برای دریافت Node باید کارهای بیشتری انجام دهید process در حال اجرا دوباره، مانند تنظیم آن برای اجرا روی راه اندازی با قرار دادن/پیوند دادن آن در /etc/init.d/
. انجام این کار خیلی سخت نیست، اما خیلی راحت هم نیست.
(برچسب ها برای ترجمه)# یونیکس
منتشر شده در 1403-01-29 21:08:21