سرور مجازی

انجام کارها توسط ابزارهای خودکارسازی در سرورهای لینوکس

کرون (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 به‌جای روزهای هفته است و از یک تا ۷ مقدار دارد.
قواعد و دستورات اصلی Cron در لینوکس
قواعد و دستورات اصلی Cron در لینوکس

 

همچنین می‌توان از کدهای کوتاه استفاده کرد. به نمونه‌های زیر دقت کنید:

  • 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 #
cd scripts #

 

 

یک فایل متنی به نام system_info.sh با ادیتور متنی مورد نظر خود باز می‌کنیم و کار را با وارد کردن یکسری خطوط کامنت شده در بالای فایل و سپس کامندهای مورد نظر آغاز می‌کنیم.

کد PHP:

bin/bash/!#
 Sample script written for Part 4 of the RHCE series #
:This script will return the following set of system information #
 :Hostname information- #
“echo -e “\e[31;43m***** HOSTNAME INFORMATION *****\e[0m
hostnamectl
“” echo
:File system disk space usage- #
“echo -e “\e[31;43m***** FILE SYSTEM DISK SPACE USAGE *****\e[0m
df -h
“” echo
:Free and used memory in the system- #
“echo -e “\e[31;43m ***** FREE AND USED MEMORY *****\e[0m
free
“” echo
:System uptime and load- #
“echo -e “\e[31;43m***** SYSTEM UPTIME AND LOAD *****\e[0m
uptime
“” echo
# :Logged-in users- #
“echo -e “\e[31;43m***** CURRENTLY LOGGED-IN USERS *****\e[0m
who
“” echo
Top 5 processes as far as memory usage is concerned- #
“echo -e “\e[31;43m***** TOP 5 MEMORY-CONSUMING PROCESSES *****\e[0m
ps -eo %mem,%cpu,comm –sort=-%mem | head -n 6
“” echo
“echo -e “\e[1;32mDone.\e[0m

 

 

اکنون به اسکریپت، پرمیشن (Permission) های اجرایی می‌دهیم.

 

chmod +x system_info.sh #

 

 

و آن را با استفاده از دستور زیر اجرا می‌کنیم:

 

 

system_info.sh/.

 

 

توجه کنید که Header هر بخش برای دید بهتر به صورت رنگی نمایش داده شده است.

اسکریپت برای نمایش اطلاعات سیستم در shell script
اسکریپت برای نمایش اطلاعات سیستم در Shell Script

 

قابلیت هدر رنگی توسط دستور زیر فراهم آمده است:

 

“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/!#
:Sample script to automate tasks #
:Update local file database- #
“echo -e “\e[4;32mUPDATING LOCAL FILE DATABASE\e[0m
updatedb
if [ $? == 0 ]; then
“.echo “The local file database was updated correctly
else
“.echo “The local file database was not updated correctly
fi
“” echo
.Find and / or delete files with 777 permissions- #
“echo -e “\e[4;32mLOOKING FOR FILES WITH 777 PERMISSIONS\e[0m
.Enable either option (comment out the other line), but not both #
.Option 1: Delete files without prompting for confirmation. Assumes GNU version of find #
find -type f -perm 0777 -delete#
.Option 2: Ask for confirmation before deleting files. More portable across systems#
;+ {} find -type f -perm 0777 -exec rm -i
“” echo
Alert when file system usage surpasses a defined limit- #
“echo -e “\e[4;32mCHECKING FILE SYSTEM USAGE\e[0m
THRESHOLD=30
while read line; do
This variable stores the file system path as a string #
FILESYSTEM=$(echo $line | awk ‘{print $1}’)
This variable stores the use percentage (XX%) #
PERCENTAGE=$(echo $line | awk ‘{print $5}’)
.Use percentage without the % sign #
USAGE=${PERCENTAGE%?}
if [ $USAGE -gt $THRESHOLD ]; then
“echo “The remaining available space in $FILESYSTEM is critically low. Used: $PERCENTAGE
fi
done < <(df -h –total | grep -vi filesystem)

 

 

 

 

خلاصه

در نتیجه برای انجام خودکار کارها در لینوکس میتوان از دو روش به صورت کرون و شل اسکریپت استفاده کرد که در مقاله بالا به صورت کامل شرح داده شد که امیدواریم مفید واقع شده باشد.

 

 

5/5 - (6 votes)
تفاوت بین سرورهای مجازی ویندوز و لینوکس
مشاهده
دکمه بازگشت به بالا