انجام کارها توسط ابزارهای خودکارسازی در سرورهای لینوکس
کرون (Cron)، دستورات Crontab، کار با Shell Scripting
مقدمهای بر این موضوعسرورهای لینوکس ابزارهای قدرتمندی هستند که به ما این امکان را میدهند کارهای مختلف را به صورت خودکار انجام دهیم. این قابلیت بسیار مفید است زیرا ما میتوانیم وظایف روزانه و مکرر را به سرورها واگذار کنیم و به جای صرف وقت و انرژی برای انجام آنها، به فعالیتهای دیگر بپردازیم.
|
انجام خودکار کارها در سرورهای لینوکس
با استفاده از اسکریپتها و ابزارهای خودکارسازی در سرورهای لینوکس، میتوان به راحتی کارهای روزمره را انجام داد. با استفاده از ابزارهایی مانند Cron و Shell Scripting، میتوان برنامهها و فرآیندهای مختلف را زمانبندی کرده و به صورت خودکار اجرا کرد. این قابلیت به مدیران سیستم امکان میدهد تا وقت خود را برای کارهای مهمتری مانند مانیتورینگ و بهینهسازی سرورها صرف کنند. با استفاده از این ابزارها، میتوان به طور مداوم و بدون نیاز به دخالت دستی، سرورها را بهینه کرده و عملکرد آنها را بهبود بخشید.
در این مقاله ابتدا روش کار با کرون Cron و سپس روش کار با Shell Scripting اشاره می شود…
کرون (Cron) چیست؟
Cron ابزاری در سیستم عاملهای مبتنی بر یونیکس همچون گنو و لینوکس است که امکان اجرای کامندها و اسکریپتها در آینده را به کاربر میدهد. با استفاده از کرون، کاربران لینوکس میتوانند در زمان مشخصی در آینده و یا در بازههای زمانی تکرارشنودهای اقدام به اجرای کامندها یا اسکریپتهای خاصی نمایند.
ماهیت کرون آن را برای کارهای مدیریت سیستم همچون بکاپگیری، دانلود فایل از اینترنت، ارسال ایمیل و… بسیار کاربردی میسازد.
کرون توسط یک فایل پیکربندی تحت عنوان Cron Table که در مسیر etc/crontab/ قرار دارد اجرا میشود؛ هر یک از خطوط فایل crontab نشانگر یک کامندی که در زمان خاصی اجرا خواهد شد.
۱- آموزش نصب Cron
-
آموزش نصب Cron در لینوکس Centos / RHEL
برای نصب ابزار Cron در لینوکس Centos / RHEL و سایر توزیعهای پایه این دو لینوکس دستور زیر را وارد نمایید.
yum install -y Cronie
|
-
آموزش نصب Cron در لینوکس Debian / Ubuntu
جهت نصب ابزار Cron در لینوکس ابونتو و دبیان و یا سایر توزیعهایی که از این دو لینوکس نشعت گرفتهاند ، دستور زیر کاربرد خواهد داشت.
apt-get install –y cron
|
حال پس از نصب این دستور، شما قادر خواهید بود تنظیمات مورد نیاز خود را وارد کنید.
۲- آموزش کار با دستورات Crontab
شیوه تایپ دستور در کرون تب به صورت زیر است:
crontab [ -u user ] file crontab [ -u user ] [ -i ] { -e | -l | -r } [-s]
|
- گزینه l- خروجی کرون تب را در خروجی استاندارد قرار خواهد داد.
- گزینه r- کرون تب فعلی را حذف میکند.
- گزینه e- برای ویرایش کرون تب فعلی داخل ویرایشگر خود ترمینال بهکار میرود.
- گزینه u- نام کاربری که کرون تب را تولید کرده، میآورد.
- گزینه s- وضعیت امنیتی را نمایش میدهد.
” توجه داشته باشید که برخی از برنامهها برای اجرای درست نیازمند آن هستند که با دسترسی root اجرا شوند. در این حالت کافی است پیش از اجرا با استفاده از دستور su؛ به شناسه روت بروید (یا از دستور sudo استفاده کنید) “
برای ویرایش کرون تب عبارت زیر را تایپ و تایید کنید:
crontab -e و یا sudo crontab -e
|
راه اندازی کرون چگونه است؟
در این قسمت میخواهیم به قواعد و دستورات اصلی کرون و سپس نحوه راه اندازی آن بپردازیم.
قواعد و دستورات اصلی Cron در لینوکس که دانستن آنها الزامی است:
- یک فیلد میتواند کاراکتر ستاره باشد.
- حرف m بهجای دقیقه است و از ۰ تا ۵۹ مقدار دارد.
- حرف h بهجای ساعت است و ۰ تا ۲۳ مقدار دارد.
- حرف dom بهجای روزهای ماه است و از یک تا ۳۱ مقدار دارد.
- حرف mon بهجای ماههای سال است و از یک تا ۱۲ مقدار دارد.
- حرف dow بهجای روزهای هفته است و از یک تا ۷ مقدار دارد.
همچنین میتوان از کدهای کوتاه استفاده کرد. به نمونههای زیر دقت کنید:
- reboot@ یک بار در زمان استارت آپ سیستم اجرا شود.
- yearly@ یک بار در طول سال اجرا شود. (یعنی برابر است با *۱۱ ۰ ۰)
- monthly@ یک بار در طول ماه اجرا شود.
- weekly@ یک بار در طول هفته اجرا شود.
- daily@ هر روز اجرا شود.
- hourly@ هر ساعت اجرا شود.
- midnight@ برابر است با daily
اگر برای اولین بار کرون تب را اجرا کنید، میتوانید ویرایشگر متن خود را انتخاب کنید. توصیه ما استفاده از ادیتور nano است که کار را به سادگی انجام میدهد.
برای انجام کار اصلی، عبارت زیر را در فایل crontab وارد کنید:
echo “The current minute is: $(date)” »» /tmp/minute.log * * * * *
|
با فشردن کلیدهای Control-X ادیتور را ببندید و فایل را ذخیره کنید. پیغام ذخیره موفقیت آمیز برایتان نمایش داده میشود. از این به بعد، با بازکردن فایل /tmp/minute.log میتوانید ببینید که کار بهصورت خودکار در حال انجام است.
حالا اگر بخواهیم هر دو دقیقه تاریخ را به چاپ برسانیم، باید دستور زیر را در کرون تب بنویسیم:
/*2 echo “The current minute is: $(date)” »» /tmp/minute.log * * * *
|
” توجه کنید که استفاده از n/* (وقتی n بزرگتر از صفر باشد) به سیستم میگوید هر n دقیقه یک بار یا n ساعت یک بار این دستور را اجرا کن. “
حال فرض کنید بخواهیم تاریخ را در ساعت ۵:۳۰ صبح هر روز به چاپ برسانیم. باید از دستور زیر برای این کار استفاده کنیم:
30 5 * * 1,5 echo “The current minute is: $(date)” »» /tmp/minute.log
|
استفاده از دستور echo در کرون تب را خوب بررسی کردیم، اما به جای آن میتوان دستورات اجرای برنامهها را گذاشت و برنامههای مختلف را اجرا کرد.
Shell Script چیست؟
به عبارت کوتاه یک شل اسکریپت چیزی کمتر یا بیشتر از یک برنامهای که مرحله به مرحله توسط Shell اجرا میشود نیست، در حقیقت برنامه دیگریست که لایه اینترفیسی بین Kernel لینوکس و کاربر نهایی فراهم می آورد. به صورت پیش فرض، شل مورد استفاده برای اکانت کاربران در ردهت 7 bash (/bin/bash) می باشد.
۱) نوشتن یک اسکریپت برای نمایش اطلاعات سیستم جهت راحتی کار
ابتدا یک دایرکتوری ایجاد میکنیم و شل اسکریپت های خود را در آن ذخیره میکنیم:
کد PHP:
mkdir scripts #
|
یک فایل متنی به نام system_info.sh با ادیتور متنی مورد نظر خود باز میکنیم و کار را با وارد کردن یکسری خطوط کامنت شده در بالای فایل و سپس کامندهای مورد نظر آغاز میکنیم.
کد PHP:
bin/bash/!#
|
اکنون به اسکریپت، پرمیشن (Permission) های اجرایی میدهیم.
chmod +x system_info.sh #
|
و آن را با استفاده از دستور زیر اجرا میکنیم:
system_info.sh/.
|
توجه کنید که Header هر بخش برای دید بهتر به صورت رنگی نمایش داده شده است.
قابلیت هدر رنگی توسط دستور زیر فراهم آمده است:
“echo -e “\e[COLOR1;COLOR2m<YOUR TEXT HERE>\e[0m
|
در دستور بالا COLOR1 و COLOR2 به ترتیب رنگ های Foreground و Background میباشند، و همچنین <YOUR TEXT HERE> رشته ایست که میخواهید رنگی نمایش داده شود.
۲) اتوماتیک کردن Task ها در لینوکس
کارهایی که ممکن است شما نیاز داشته باشید آنها را اتوماتیک کنید ممکن است مورد به مورد با هم متفاوت باشند. ما در اینجا سه مورد تسک کلاسیک که امکان اتوماتیک کردن آن با استفاده از Shell Script هست را ارائه خواهیم داد.
- آپدیت کردن فایل دیتابیس لوکال
- پیدا کردن فایل هایی با پرمیشن (Permission) 777 ( و سپس حذف آن ها)
- هشدار به هنگام مصرف بیش از حد تعریف شده توسط فایل سیستم
برای انجام این کار فایلی به نام auto_tasks.sh در دایرکتوری اسکریپت مان با محتوای زیر ایجاد می کنیم.
bin/bash/!#
|
خلاصهدر نتیجه برای انجام خودکار کارها در لینوکس میتوان از دو روش به صورت کرون و شل اسکریپت استفاده کرد که در مقاله بالا به صورت کامل شرح داده شد که امیدواریم مفید واقع شده باشد.
|