در لینوکس، اتوماسیون فرآیند به شدت به اسکریپت نویسی پوسته متکی است. این شامل ایجاد یک فایل حاوی یک سری دستورات است که می توانند با هم اجرا شوند.

در این مقاله، ما با اصول اولیه برنامه نویسی bash که شامل متغیرها، دستورات، ورودی/خروجی ها و اشکال زدایی می شود، شروع می کنیم. همچنین نمونه هایی از هر کدام را در طول مسیر خواهیم دید.

بیا شروع کنیم. 🚀

فهرست مطالب

  1. پیش نیازها
  2. معرفی
  • تعریف برنامه نویسی Bash
  • مزایای برنامه نویسی Bash
  • نمای کلی پوسته Bash و رابط خط فرمان
  1. چگونه با Bash Scripting شروع کنیم
  • نحوه اجرای دستورات Bash از خط فرمان
  • نحوه ایجاد و اجرای اسکریپت های Bash
  1. مبانی اسکریپت نویسی Bash

  • نظرات در برنامه نویسی bash
  • متغیرها و انواع داده ها در Bash
  • ورودی و خروجی در اسکریپت های Bash
  • دستورات اولیه Bash (پژواک، خواندن و غیره)
  • عبارات شرطی (اگر/دیگر)

  1. حلقه زنی و انشعاب در بش
  • در حالی که حلقه
  • برای حلقه
  • اظهارات موردی
  1. نحوه برنامه ریزی اسکریپت ها با استفاده از cron
  2. نحوه اشکال زدایی و عیب یابی اسکریپت های Bash
  3. نتیجه
  • منابعی برای کسب اطلاعات بیشتر در مورد برنامه نویسی Bash

پیش نیازها

برای دنبال کردن این آموزش، باید دسترسی های زیر را داشته باشید:

  • نسخه در حال اجرا لینوکس با دسترسی به خط فرمان.

اگر لینوکس را نصب نکرده اید یا تازه شروع به کار کرده اید، می توانید به راحتی از طریق Replit به خط فرمان لینوکس دسترسی داشته باشید. Replit یک IDE مبتنی بر مرورگر است که در آن می توانید در عرض چند دقیقه به پوسته bash دسترسی پیدا کنید.

همچنین می توانید لینوکس را با استفاده از WSL (زیر سیستم ویندوز برای لینوکس) در بالای سیستم ویندوز خود نصب کنید. در اینجا یک آموزش برای آن وجود دارد.

معرفی

تعریف برنامه نویسی Bash

اسکریپت bash فایلی است که شامل یک سری دستورات است که توسط برنامه bash خط به خط اجرا می شود. این به شما امکان می دهد یک سری اقدامات مانند پیمایش به یک فهرست خاص، ایجاد یک پوشه و راه اندازی یک فرآیند با استفاده از خط فرمان را انجام دهید.

با ذخیره این دستورات در یک اسکریپت، می‌توانید همان ترتیب مراحل را چندین بار تکرار کنید و با اجرای اسکریپت آن‌ها را اجرا کنید.

مزایای برنامه نویسی Bash

برنامه نویسی Bash یک ابزار قدرتمند و همه کاره برای خودکارسازی وظایف مدیریت سیستم، مدیریت منابع سیستم و انجام سایر وظایف معمول در سیستم های یونیکس/لینوکس است. برخی از مزایای اسکریپت نویسی پوسته عبارتند از:

  • اتوماسیون: اسکریپت های شل به شما امکان می دهند وظایف و فرآیندهای تکراری را خودکار کنید، در زمان صرفه جویی کنید و خطر خطاهایی را که ممکن است با اجرای دستی رخ دهد، کاهش دهید.
  • قابل حمل بودن: اسکریپت های شل را می توان بر روی پلتفرم ها و سیستم عامل های مختلف از جمله یونیکس، لینوکس، macOS و حتی ویندوز با استفاده از شبیه سازها یا ماشین های مجازی اجرا کرد.
  • انعطاف پذیری: اسکریپت های Shell بسیار قابل تنظیم هستند و به راحتی می توان آنها را مطابق با نیازهای خاص تغییر داد. آنها همچنین می توانند با سایر زبان های برنامه نویسی یا ابزارهای کاربردی ترکیب شوند تا اسکریپت های قدرتمندتری ایجاد کنند.
  • دسترسی: اسکریپت های Shell به راحتی نوشته می شوند و به ابزار یا نرم افزار خاصی نیاز ندارند. آنها را می توان با استفاده از هر ویرایشگر متنی ویرایش کرد و اکثر سیستم عامل ها دارای یک مفسر پوسته داخلی هستند.
  • ادغام: اسکریپت‌های شل را می‌توان با ابزارها و برنامه‌های کاربردی دیگر، مانند پایگاه‌های داده، سرورهای وب و سرویس‌های ابری ادغام کرد که امکان اتوماسیون پیچیده‌تر و وظایف مدیریت سیستم را فراهم می‌کند.
  • اشکال زدایی: اسکریپت های Shell به راحتی اشکال زدایی می شوند و اکثر پوسته ها دارای ابزارهای داخلی اشکال زدایی و گزارش خطا هستند که می تواند به شناسایی و رفع سریع مشکلات کمک کند.

نمای کلی پوسته Bash و رابط خط فرمان

اصطلاحات “پوسته” و “باش” به جای یکدیگر استفاده می شوند. اما یک تفاوت ظریف بین این دو وجود دارد.

اصطلاح “پوسته” به برنامه ای اشاره دارد که یک رابط خط فرمان برای تعامل با یک سیستم عامل فراهم می کند. Bash (Bourne-Again SHell) یکی از رایج ترین پوسته های یونیکس/لینوکس است و پوسته پیش فرض در بسیاری از توزیع های لینوکس است.

یک رابط پوسته یا خط فرمان به شکل زیر است:

تصویر-135
پوسته دستورات کاربر را می پذیرد و خروجی را نمایش می دهد

در خروجی بالا، zaira@Zaira اعلان پوسته است. هنگامی که یک پوسته به صورت تعاملی استفاده می شود، a را نمایش می دهد $ زمانی که منتظر دستور کاربر است.

اگر پوسته به‌عنوان روت (یک کاربر با حقوق مدیریت) اجرا می‌شود، درخواست به تغییر می‌یابد #. اعلان پوسته superuser به شکل زیر است:

[root@host ~]#

اگرچه Bash یک نوع پوسته است، اما پوسته های دیگری نیز موجود است، مانند پوسته Korn (ksh)، پوسته C (csh) و پوسته Z (zsh). هر پوسته نحو و مجموعه ای از ویژگی های خاص خود را دارد، اما همه آنها هدف مشترکی از ارائه یک رابط خط فرمان برای تعامل با سیستم عامل دارند.

شما می توانید نوع پوسته خود را با استفاده از ps دستور:

ps

این خروجی برای من است:

تصویر-134
بررسی نوع پوسته من از bash shell استفاده می کنم

به طور خلاصه، در حالی که “شل” یک اصطلاح گسترده است که به هر برنامه ای اشاره دارد که یک رابط خط فرمان ارائه می کند، “Bash” نوع خاصی از پوسته است که به طور گسترده در سیستم های یونیکس/لینوکس استفاده می شود.

توجه: در این آموزش از پوسته “bash” استفاده خواهیم کرد.

چگونه با Bash Scripting شروع کنیم

اجرای دستورات Bash از خط فرمان

همانطور که قبلا ذکر شد، درخواست پوسته چیزی شبیه به این است:

[username@host ~]$

می توانید هر دستوری را بعد از آن وارد کنید $ امضا کنید و خروجی ترمینال را ببینید.

به طور کلی، دستورات از این نحو پیروی می کنند:

command [OPTIONS] arguments

بیایید در مورد چند دستور bash اساسی بحث کنیم و خروجی های آنها را ببینیم. حتما دنبال کنید 🙂

  • date: تاریخ جاری را نمایش می دهد
zaira@Zaira:~/shell-tutorial$ date
Tue Mar 14 13:08:57 PKT 1402
  • pwd: دایرکتوری فعلی را نمایش می دهد.
zaira@Zaira:~/shell-tutorial$ pwd
/home/zaira/shell-tutorial
  • ls: محتویات دایرکتوری فعلی را فهرست می کند.
zaira@Zaira:~/shell-tutorial$ ls
check_plaindrome.sh  count_odd.sh  env  log  temp
  • echo: رشته ای از متن یا مقدار یک متغیر را در ترمینال چاپ می کند.
zaira@Zaira:~/shell-tutorial$ echo "Hello bash"
Hello bash

شما همیشه می توانید به یک دفترچه دستورات با استفاده از man فرمان

به عنوان مثال، دفترچه راهنما برای ls چیزی شبیه این به نظر می رسد:

پیشنهاد می‌کنیم بخوانید:  روش نصب آپاچی در اوبونتو 22.04
تصویر-138
می توانید با استفاده از جزئیات گزینه های یک فرمان را ببینید man

نحوه ایجاد و اجرای اسکریپت های Bash

قراردادهای نامگذاری اسکریپت

با نامگذاری قرارداد، اسکریپت های bash به پایان می رسند .sh. با این حال، اسکریپت‌های bash می‌توانند بدون آن به خوبی اجرا شوند sh افزونه.

اضافه کردن شبانگ

اسکریپت های Bash با a شروع می شوند shebang. شبانگ ترکیبی از bash # و bang ! به دنبال آن مسیر پوسته بش. این خط اول فیلمنامه است. Shebang به پوسته می گوید که آن را از طریق bash shell اجرا کند. Shebang به سادگی یک مسیر مطلق به مترجم bash است.

در زیر نمونه ای از عبارت shebang آورده شده است.

#!/bin/bash

با استفاده از دستور می توانید مسیر پوسته bash خود را (که ممکن است با موارد بالا متفاوت باشد) پیدا کنید:

which bash

ایجاد اولین اسکریپت bash ما

اولین اسکریپت ما از کاربر می خواهد که یک مسیر را وارد کند. در عوض، محتویات آن درج خواهد شد.

یک فایل به نام ایجاد کنید run_all.sh با استفاده از vi فرمان می توانید از هر ویرایشگر دلخواه خود استفاده کنید.

vi run_all.sh

دستورات زیر را در فایل خود اضافه کنید و آن را ذخیره کنید:

#!/bin/bash
echo "Today is " `date`

echo -e "\nenter the path to directory"
read the_path

echo -e "\n you path has the following files and folders: "
ls $the_path
اسکریپت برای چاپ محتویات دایرکتوری ارائه شده توسط کاربر

بیایید نگاهی عمیق تر به خط به خط فیلمنامه بیندازیم. من دوباره همان اسکریپت را نمایش می دهم، اما این بار با شماره خطوط.

  1 #!/bin/bash
  2 echo "Today is " `date`
  3
  4 echo -e "\nenter the path to directory"
  5 read the_path
  6
  7 echo -e "\n you path has the following files and folders: "
  8 ls $the_path
  • خط شماره 1: شبانگ (#!/bin/bash) به مسیر پوسته bash اشاره می کند.
  • خط شماره 2: echo فرمان تاریخ و زمان فعلی را در ترمینال نمایش می دهد. توجه داشته باشید که date در بکتیک است.
  • خط شماره 4: می خواهیم کاربر یک مسیر معتبر وارد کند.
  • خط شماره 5: read دستور ورودی را می خواند و در متغیر ذخیره می کند the_path.
  • خط شماره 8: ls دستور متغیر را با مسیر ذخیره شده می گیرد و فایل ها و پوشه های فعلی را نمایش می دهد.

اجرای اسکریپت bash

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

chmod u+x run_all.sh

اینجا،

  • chmod مالکیت یک فایل را برای کاربر فعلی تغییر می دهد:u.
  • +x حقوق اجرا را به کاربر فعلی اضافه می کند. این بدان معناست که کاربری که مالک است اکنون می تواند اسکریپت را اجرا کند.
  • run_all.sh فایلی است که می خواهیم اجرا کنیم.

می توانید اسکریپت را با استفاده از هر یک از روش های ذکر شده اجرا کنید:

  • sh run_all.sh
  • bash run_all.sh
  • ./run_all.sh

بیایید ببینیم در حال اجراست 🚀

run-script-bash-2

مبانی اسکریپت نویسی Bash

نظرات در برنامه نویسی bash

نظرات با a شروع می شود # در برنامه نویسی bash. این بدان معنی است که هر خطی که با a شروع شود # یک نظر است و توسط مترجم نادیده گرفته می شود.

نظرات در مستندسازی کد بسیار مفید هستند و افزودن آنها برای کمک به دیگران برای درک کد، تمرین خوبی است.

اینها نمونه هایی از نظرات هستند:

# This is an example comment
# Both of these lines will be ignored by the interpreter

متغیرها و انواع داده ها در Bash

متغیرها به شما امکان می دهند داده ها را ذخیره کنید. شما می توانید از متغیرها برای خواندن، دسترسی و دستکاری داده ها در سراسر اسکریپت خود استفاده کنید.

هیچ نوع داده ای در Bash وجود ندارد. در Bash، یک متغیر می‌تواند مقادیر عددی، نویسه‌های جداگانه یا رشته‌هایی از کاراکترها را ذخیره کند.

در Bash، می توانید مقادیر متغیر را به روش های زیر استفاده و تنظیم کنید:

  1. مقدار را مستقیماً اختصاص دهید:
country=Pakistan

2. مقدار را بر اساس خروجی به دست آمده از یک برنامه یا دستور با استفاده از جایگزینی دستور اختصاص دهید. توجه داشته باشید که $ برای دسترسی به مقدار متغیر موجود مورد نیاز است.

same_country=$country
این مقدار را تعیین می کند countryبه متغیر جدید same_country

برای دسترسی به مقدار متغیر، ضمیمه کنید $ به نام متغیر

zaira@Zaira:~$ country=Pakistan
zaira@Zaira:~$ echo $country
Pakistan
zaira@Zaira:~$ new_country=$country
zaira@Zaira:~$ echo $new_country
Pakistan
تخصیص و چاپ مقادیر متغیر

قراردادهای نامگذاری متغیرها

در برنامه نویسی Bash، قراردادهای نامگذاری متغیرها به شرح زیر است:

  1. نام متغیرها باید با یک حرف یا زیرخط شروع شود (_).
  2. نام متغیرها می تواند شامل حروف، اعداد و زیرخط باشد (_).
  3. نام متغیرها به حروف بزرگ و کوچک حساس هستند.
  4. نام متغیرها نباید حاوی فاصله یا کاراکترهای خاص باشد.
  5. از نام های توصیفی استفاده کنید که هدف متغیر را منعکس می کند.
  6. از استفاده از کلمات کلیدی رزرو شده خودداری کنید، مانند if، then، else، fi، و غیره به عنوان نام متغیرها.

در اینجا چند نمونه از نام متغیرهای معتبر در Bash آمده است:

name
count
_var
myVar
MY_VAR

و در اینجا چند نمونه از نام متغیرهای نامعتبر آورده شده است:

2ndvar (variable name starts with a number)
my var (variable name contains a space)
my-var (variable name contains a hyphen)

پیروی از این قراردادهای نامگذاری به خوانایی اسکریپت های Bash و نگهداری آسان تر کمک می کند.

ورودی و خروجی در اسکریپت های Bash

جمع آوری ورودی

در این بخش، چند روش برای ارائه ورودی به اسکریپت‌هایمان را مورد بحث قرار می‌دهیم.

  1. خواندن ورودی کاربر و ذخیره آن در یک متغیر

ما می توانیم ورودی کاربر را با استفاده از آن بخوانیم read فرمان

#!/bin/bash
echo "Today is " `date`

echo -e "\nenter the path to directory"
read the_path

echo -e "\nyour path has the following files and folders: "
ls $the_path
نام-ش

2. خواندن از روی یک فایل

این کد هر خط را از فایلی به نام می خواند input.txt و آن را در ترمینال چاپ می کند. ما در ادامه این مقاله به بررسی حلقه های while می پردازیم.

while read line
do
  echo $line
done < input.txt

3. آرگومان های خط فرمان

در یک اسکریپت یا تابع bash، $1 نشان دهنده آرگومان اولیه تصویب شده است، $2 نشان دهنده آرگومان دوم تصویب شده و غیره است.

این اسکریپت یک نام به عنوان آرگومان خط فرمان می گیرد و یک تبریک شخصی چاپ می کند.

echo "Hello, $1!"

عرضه کرده ایم Zaira به عنوان استدلال ما برای فیلمنامه.

#!/bin/bash
echo "Hello, $1!"
کد اسکریپت: greeting.sh

خروجی:

name-sh-1

نمایش خروجی

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

  1. چاپ در ترمینال:
echo "Hello, World!"

این متن “سلام، جهان!” به ترمینال

2. نوشتن در یک فایل:

echo "This is some text." > output.txt

این متن را می نویسد “این چند متن است.” به فایلی به نام output.txt. توجه داشته باشید که >اپراتور در صورتی که فایلی دارای محتوایی باشد، آن را بازنویسی می کند.

3. الحاق به یک فایل:

echo "More text." >> output.txt

این متن “متن بیشتر” را اضافه می کند. تا انتهای فایل output.txt.

4. تغییر مسیر خروجی:

ls > files.txt

این فایل ها را در فهرست فعلی لیست می کند و خروجی را در فایلی با نام می نویسد files.txt. از این طریق می توانید خروجی هر دستوری را به یک فایل هدایت کنید.

دستورات اولیه Bash (پژواک، خواندن و غیره)

در اینجا لیستی از برخی از متداول ترین دستورات bash آمده است:

  1. cd: دایرکتوری را به مکان دیگری تغییر دهید.
  2. ls: محتویات دایرکتوری فعلی را فهرست کنید.
  3. mkdir: یک دایرکتوری جدید ایجاد کنید.
  4. touch: یک فایل جدید ایجاد کنید.
  5. rm: یک فایل یا دایرکتوری را حذف کنید.
  6. cp: یک فایل یا دایرکتوری را کپی کنید.
  7. mv: انتقال یا تغییر نام یک فایل یا دایرکتوری.
  8. echo: متن را در ترمینال چاپ کنید.
  9. cat: محتویات یک فایل را به هم متصل کرده و چاپ کنید.
  10. grep: جستجوی یک الگو در یک فایل.
  11. chmod: مجوزهای یک فایل یا دایرکتوری را تغییر دهید.
  12. sudo: دستوری را با امتیازات مدیریتی اجرا کنید.
  13. df: نمایش میزان فضای موجود در دیسک.
  14. history: نمایش لیستی از دستورات اجرا شده قبلی.
  15. ps: نمایش اطلاعات مربوط به فرآیندهای در حال اجرا.
پیشنهاد می‌کنیم بخوانید:  جاوا اسکریپت: حذف یک ویژگی از یک ObjectAn شی در جاوا اسکریپت مجموعه ای از جفت های کلید-مقدار است. یکی از این جفت‌های کلید-مقدار، ویژگی شی نامیده می‌شود. هر دو کلید و مقادیر خصوصیات می توانند از هر نوع داده ای باشند - Number، String، Array، Object، و غیره. به عنوان مثال: const dog = { name: "Sandy", age: 3, emoji: "...

عبارات شرطی (اگر/دیگر)

عباراتی که نتیجه بولی ایجاد می کنند، درست یا نادرست، شرایط نامیده می شوند. چندین روش برای ارزیابی شرایط وجود دارد، از جمله if، if-else، if-elif-else، و شرط های تو در تو.

نحو:

if [[ condition ]];
then
	statement
elif [[ condition ]]; then
	statement 
else
	do this by default
fi
نحو عبارات شرطی bash

می توانیم از عملگرهای منطقی مانند AND استفاده کنیم -a و OR -o برای انجام مقایسه هایی که اهمیت بیشتری دارند.

if [ $a -gt 60 -a $b -lt 100 ]
این عبارت بررسی می کند که آیا هر دو شرط وجود دارد یا خیر true: a بزرگتر از 60 و b کمتر از 100 است.

بیایید نمونه ای از اسکریپت Bash را ببینیم که از آن استفاده می کند if، if-else، و if-elif-else عباراتی برای تعیین اینکه آیا یک عدد وارد شده توسط کاربر مثبت، منفی یا صفر است:

#!/bin/bash

echo "Please enter a number: "
read num

if [ $num -gt 0 ]; then
  echo "$num is positive"
elif [ $num -lt 0 ]; then
  echo "$num is negative"
else
  echo "$num is zero"
fi
اسکریپت برای تعیین مثبت، منفی یا صفر بودن یک عدد

اسکریپت ابتدا از کاربر می خواهد که یک عدد را وارد کند. سپس، از یک استفاده می کند if دستور برای بررسی اینکه آیا عدد بزرگتر از 0 است یا خیر. اگر عدد بزرگتر از 0 نباشد، اسکریپت به دستور بعدی می رود که عبارت است از an if-elif بیانیه. در اینجا، اسکریپت بررسی می کند که آیا عدد کمتر از 0 است یا خیر. اگر اینطور باشد، اسکریپت خروجی می دهد که عدد منفی است. در نهایت، اگر عدد نه بزرگتر از 0 و نه کمتر از 0 باشد، اسکریپت از an استفاده می کند else عبارت برای خروجی که عدد صفر است.

دیدن آن در عمل 🚀

تست عجیب

حلقه زنی و انشعاب در بش

در حالی که حلقه

حلقه‌های while یک شرط را بررسی می‌کنند و تا زمانی که شرط باقی بماند حلقه بزنید true. ما باید یک عبارت counter ارائه کنیم که شمارنده را برای کنترل اجرای حلقه افزایش دهد.

در مثال زیر، (( i += 1 )) عبارت شمارنده ای است که مقدار آن را افزایش می دهد i. حلقه دقیقا 10 بار اجرا می شود.

#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
   echo "$i"
  (( i += 1 ))
done
حلقه while که 10 بار تکرار می شود.
تصویر-187

برای حلقه

این for حلقه، درست مانند while حلقه، به شما این امکان را می دهد که عبارات را چندین بار اجرا کنید. هر حلقه از نظر نحو و کاربرد متفاوت است.

در مثال زیر، حلقه 5 بار تکرار می شود.

#!/bin/bash

for i in {1..5}
do
    echo $i
done
برای حلقه ای که 5 بار تکرار می شود.
تصویر-186

اظهارات موردی

در Bash، عبارات case برای مقایسه یک مقدار داده شده با لیستی از الگوها و اجرای یک بلوک کد بر اساس اولین الگوی منطبق استفاده می شود. نحو دستور case در Bash به شرح زیر است:

case expression in
    pattern1)
        # code to execute if expression matches pattern1
        ;;
    pattern2)
        # code to execute if expression matches pattern2
        ;;
    pattern3)
        # code to execute if expression matches pattern3
        ;;
    *)
        # code to execute if none of the above patterns match expression
        ;;
esac
نحو عبارات موردی

در اینجا، «expression» مقداری است که می‌خواهیم مقایسه کنیم، و «pattern1»، «pattern2»، «pattern3» و غیره الگوهایی هستند که می‌خواهیم آن را با آن مقایسه کنیم.

نقطه ویرگول دوتایی “;;” هر بلوک کد را برای اجرا برای هر الگو جدا می کند. ستاره “*” نشان دهنده حالت پیش فرض است که در صورتی اجرا می شود که هیچ یک از الگوهای مشخص شده با عبارت مطابقت نداشته باشد.

بیایید یک مثال را ببینیم.

fruit="apple"

case $fruit in
    "apple")
        echo "This is a red fruit."
        ;;
    "banana")
        echo "This is a yellow fruit."
        ;;
    "orange")
        echo "This is an orange fruit."
        ;;
    *)
        echo "Unknown fruit."
        ;;
esac
نمونه ای از بیانیه پرونده

در این مثال، از آنجایی که مقدار “میوه” “سیب” است، اولین الگوی منطبق است، و بلوک کدی که “این میوه قرمز است” را بازتاب می دهد. اجرا می شود. اگر مقدار “میوه” به جای “موز” بود، الگوی دوم مطابقت داشت و بلوک کدی که “این میوه زرد است” منطبق بود. اجرا می کرد و غیره اگر مقدار “fruit” با هیچ یک از الگوهای مشخص شده مطابقت نداشته باشد، حالت پیش فرض اجرا می شود که “میوه ناشناخته” را بازتاب می دهد.

نحوه برنامه ریزی اسکریپت ها با استفاده از cron

Cron یک ابزار قدرتمند برای زمان بندی کار است که در سیستم عامل های مشابه یونیکس موجود است. با پیکربندی cron، می‌توانید کارهای خودکار را برای اجرای روزانه، هفتگی، ماهانه یا زمانی خاص تنظیم کنید. قابلیت های اتوماسیون ارائه شده توسط cron نقش مهمی در مدیریت سیستم لینوکس ایفا می کند.

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

# Cron job example
* * * * * sh /path/to/script.sh

اینجا *s به ترتیب بیانگر دقیقه(ها) ساعت(ها) روز(های) ماه(های) روزهای هفته است.

در زیر چند نمونه از زمان بندی کار های cron آورده شده است.

برنامه شرح مثال
0 0 * * * هر روز یک اسکریپت را نیمه شب اجرا کنید 0 0 * * * /path/to/script.sh
*/5 * * * * هر 5 دقیقه یک اسکریپت را اجرا کنید */5 * * * * /path/to/script.sh
0 6 * * 1-5 یک اسکریپت را در ساعت 6 صبح از دوشنبه تا جمعه اجرا کنید 0 6 * * 1-5 /path/to/script.sh
0 0 1-7 * * یک اسکریپت را در 7 روز اول هر ماه اجرا کنید 0 0 1-7 * * /path/to/script.sh
0 12 1 * * یک اسکریپت را در روز اول هر ماه در ظهر اجرا کنید 0 12 1 * * /path/to/script.sh

با استفاده از کرونتاب

این crontab از ابزار برای افزودن و ویرایش cron job استفاده می شود.

crontab -l اسکریپت های از قبل برنامه ریزی شده را برای یک کاربر خاص لیست می کند.

می توانید از طریق cron را اضافه و ویرایش کنید crontab -e.

می توانید در مقاله دیگر من در اینجا اطلاعات بیشتری در مورد مشاغل ذرت بخوانید.

نحوه اشکال زدایی و عیب یابی اسکریپت های Bash

اشکال زدایی و عیب یابی مهارت های ضروری برای هر برنامه نویس Bash است. در حالی که اسکریپت های Bash می توانند فوق العاده قدرتمند باشند، می توانند مستعد خطاها و رفتارهای غیرمنتظره نیز باشند. در این بخش، نکات و تکنیک هایی را برای اشکال زدایی و عیب یابی اسکریپت های Bash مورد بحث قرار می دهیم.

را تنظیم کنید set -x گزینه

یکی از مفیدترین تکنیک ها برای اشکال زدایی اسکریپت های Bash تنظیم کردن است set -x گزینه در ابتدای اسکریپت. این گزینه حالت اشکال زدایی را فعال می کند که باعث می شود Bash هر دستوری را که اجرا می کند در ترمینال چاپ کند و قبل از آن یک + امضا کردن. این می تواند در شناسایی محل وقوع خطا در اسکریپت شما بسیار مفید باشد.

#!/bin/bash

set -x

# Your script goes here

کد خروج را بررسی کنید

هنگامی که Bash با یک خطا مواجه می شود، یک کد خروج تنظیم می کند که ماهیت خطا را نشان می دهد. می توانید کد خروجی آخرین دستور را با استفاده از $? متغیر. یک ارزش از 0 نشان دهنده موفقیت است، در حالی که هر مقدار دیگر نشان دهنده یک خطا است.

#!/bin/bash

# Your script goes here

if [ $? -ne 0 ]; then
    echo "Error occurred."
fi

استفاده کنید echo بیانیه

یکی دیگر از تکنیک های مفید برای اشکال زدایی اسکریپت های Bash، درج کردن است echo عبارات در سراسر کد شما این می تواند به شما کمک کند تا تشخیص دهید که خطاها کجا رخ می دهند و چه مقادیری به متغیرها منتقل می شوند.

#!/bin/bash

# Your script goes here

echo "Value of variable x is: $x"

# More code goes here

استفاده کنید set -e گزینه

اگر می خواهید اسکریپت شما بلافاصله پس از شکست هر دستوری در اسکریپت خارج شود، می توانید از آن استفاده کنید set -e گزینه. این گزینه باعث می شود که Bash با خطا خارج شود در صورت عدم موفقیت هر دستوری در اسکریپت، شناسایی و رفع خطاهای موجود در اسکریپت شما را آسان تر می کند.

#!/bin/bash

set -e

# Your script goes here

عیب‌یابی کرون‌ها با تأیید گزارش‌ها

ما می‌توانیم با استفاده از فایل‌های گزارش، کرون‌ها را عیب‌یابی کنیم. سیاههها برای تمام کارهای برنامه ریزی شده نگهداری می شوند. می‌توانید در گزارش‌ها بررسی و تأیید کنید که آیا یک کار خاص طبق برنامه اجرا شده است یا خیر.

برای اوبونتو/دبیان، می توانید پیدا کنید cronورود به سیستم:

/var/log/syslog

مکان برای توزیع های دیگر متفاوت است.

یک فایل گزارش کار cron می تواند به شکل زیر باشد:

2022-03-11 00:00:01 Task started
2022-03-11 00:00:02 Running script /path/to/script.sh
2022-03-11 00:00:03 Script completed successfully
2022-03-11 00:05:01 Task started
2022-03-11 00:05:02 Running script /path/to/script.sh
2022-03-11 00:05:03 Error: unable to connect to database
2022-03-11 00:05:03 Script exited with error code 1
2022-03-11 00:10:01 Task started
2022-03-11 00:10:02 Running script /path/to/script.sh
2022-03-11 00:10:03 Script completed successfully
Cron log

نتیجه

در این مقاله، نحوه دسترسی به ترمینال را شروع کردیم و سپس دستورات اولیه bash را اجرا کردیم. ما همچنین بررسی کردیم که پوسته bash چیست. ما به طور خلاصه به شاخه بندی کد با استفاده از حلقه ها و شرطی ها نگاه کردیم. در نهایت، ما در مورد خودکار کردن اسکریپت ها با استفاده از cron و سپس چند تکنیک عیب یابی بحث کردیم.

منابعی برای کسب اطلاعات بیشتر در مورد برنامه نویسی Bash

اگر می‌خواهید عمیق‌تر در دنیای bash اسکریپت کاوش کنید، به شما پیشنهاد می‌کنم این دوره آموزشی ۶ ساعته لینوکس را در freeCodeCamp ببینید.

چیز مورد علاقه شما که از این آموزش یاد گرفتید چیست؟ همچنین می توانید در هر یک از این پلتفرم ها با من ارتباط برقرار کنید. 📧

در آموزش بعدی میبینمت کد نویسی مبارک 😁

اعتبار تصویر بنر: تصویر توسط Freepik