از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 13 آموزش متخصص مهندسی داده و بیگ دیتا، مدرس به بررسی کاربردهای عملی اسکریپتینگ در محیط واقعی مهندسی داده میپردازد. در این جلسه، مفاهیمی مانند چک کردن سرورها، ایجاد هشدار در صورت مشکل، استفاده از متغیر وضعیت (exit status)، سمیکالن برای اجرای دستورات در یک خط، تفاوت بین دبل و سینگل کوتیشن در لینوکس، چاپ اسکیپ کرکترها و استفاده از بک اسلش مورد توجه قرار میگیرند. همچنین، مفهوم متغیر در اسکریپت نویسی به عنوان ابزاری برای ذخیره و استفاده مجدد اطلاعات توضیح داده میشود، با تاکید بر نامگذاری مناسب و حساسیت به حروف بزرگ و کوچک.
نکات کلیدی
اسکریپتنویسی به ویژه در عملیات تکراری و خودکار مانند چک کردن سرورها و ایجاد هشدار در صورت مشکل بسیار مفید است.
استفاده از متغیر وضعیت (exit status) به بررسی موفقیت یا شکست دستورات در اسکریپت کمک میکند.
نامگذاری متغیرها با حساسیت به حروف بزرگ و کوچک و استفاده از نامهای مناسب و قابل فهم ضروری است.
تفاوت بین دبل و سینگل کوتیشن در لینوکس بر روی نحوه پردازش محتویات متغیرها تأثیر میگذارد.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. بریم سراغ ادامه بحث اسکریپتینگ و میخوام این
جلسه راجع به صحبت کنیم که اسکریپت نویسی
دقیقاً قراره چه مشکلی رو توی دنیای واقعی
برای ما حل بکنه. یعنی در حقیقت یک مدیر
سرور یا مهندس دوابس چه استفادهای از
اسکریپتینگ میکنه؟
خب بیایم پایین.
خب یه مثال میزنم. میگه مثلاً شما فرض کنید قراره مثلاً یه تعدادی سرور لینوکسی
رو هر روز چک کنید مثلاً قراره این مواردو
هر روز روش چک کنید خب خب طبیعتاً اینکه
بخواید رو هر سرور هر روز بیاید این
دستوراتو پاش پشت هم دستی بزنید هم کار
تکراریه و هم زمانبر ولی خب میتونید یه
اسکریپت بنویسید و در حقیقت تمام این کارا
رو براتون انجام بدم
خب
بعد مثلاً بیاید یه داخلش یه سری شرط
بذارید مثلاً بگید اگه مثلاً فلان اتفاق
افتاده بود فلان کارو بکنه مثلاً یه
مثالشو اینجا داریم میزنیم مثلاً مثلاً
اگه دیس دیسک یوزر جمون بالا ۸۰ بود مثلاً
یه هشداری بده مثلاً حافظه رو بررسی بکنه
و اینا
بعد اینم از این بیایم پایین ببینیم چی داریم بکآپ گرفتنم باز یکی از اون
کاربرداست
و اینا رو فکر کنم یه بار صحبت کردیم بریم
بذاریم جلوتر
این چی میگه؟ آها امکان داره بچهها ما مثلاً قرار باشه شبا این کارو بکنیم هر
شب خب خب به جای اینکه مثلاً هر شب ساعت ۲
صبح مثلاً یا یک س۳ شب از خواب بلند شیم و
میخوایم این کارو بکنیم میتونیم اینو در
قالب یک تسک تعریف بکنیم انجام بده یه
ابزاری داره لینوکس به نام کرون این کارو
برای ما انجام مید حالا جلوتر بریم راجع
بهش صحبت میکنیم
خب اما توی دوابس اینه که ما عملیات دستیمون رو طبیعتاً کم
بکنیم. خب مثلاً ما
یه یه کاری که بچهها دباکس انجام میدن
بحث استقرار نرمافزار یا دیپلو کردن
نرمافزارن.
مثلا روندش به این شکلیه کد جدیدو دریافت
میکنن دپندنسیا نصب میشه بعد
نسخه قبلیو بکآپ میگیره فالا جدیدو
جایگزین بکنه بعد سرویس ریاستارت بشه
وضعیت برنامه بررسی بشه خب اگه میخواید
دستی انجام بشه احتمال اشتباه زیاده
میتونه در قالب یه اسکریپت کل اینو نوشت
مثلاً بره پول کنه از گیت این کارو بکنه
استارت بکنه الی آخر
یا مثلاً راه اندازه سرویس سرور جدید خودش میتونه مثلاً درباره یک اسکریپت نوشته
بشه
و حالا چیزای مختلف بریم جلوتر ببینیم
مثالاشو بیاریم
این اسکریپت نمایش سروره که خب بریم جلو اینو قبلاً توضیحشو دادم
اگه نکته جدیدی نداره آره
خب موضوع بعدی که میخوام راجع بهش صحبت کنیم اینه که ما توی شل اسکریپتینگ بچهها
یه متغیر خیلی خاصی داریم به این شکل یه
دونه علامت شبیه دالر و یه دونه علامت
سؤال خب این چیه بهش میگن اکسید استاتوس
اما ببینیم چرا مهمه
یه سؤالی وجود داره مثلاً شما فرض کنید یه
دستوری رو اجرا میکنید خب
از کجا بدونیم این دستور با موفقیت اجرا
شده مثلاً شما فرض کنید یه اسکریپتی
نوشتید یه سری دستور پشت همه از کجا
بدونیم مثلاً همه دستورو درست درست اجرا
شده. خب دقیقاً این متغیر قراره همین کارو
برای ما بکنه.
خروجی متغیر به ما میگه که آیا این کامند موفق بوده یا نه؟
اگر صفر برگردونه یعنی ساکسسز بوده. هر مقدار غیر صفر برگردونه یعنی یه خطایی رو
افتاده. حالا بستگی به نوع اون عدده داره.
خب یعنی یک اتفاقی افتاده
بیایم این مثال با هم ببینیم
مثلاً من دستور ال اسو اینجا اجرا میکنم
این الان دستور موفقه درسته اگر بزنم اکو در حقیقت علامت دالر علامت تعجب میگه صفر
یعنی چی؟ یعنی دستور آخری که اجرا شده
موفق بودم
حالا بیایم یه دونه
مثلاً من تو همین دایرکتوری کجام توی
اینجام ال اس میکنم مثلاً توی چه میدونم
مثلاً سارا خب ما دایرکتور سارا اینجا
نداریم پس باید این خطا بده حالا اگه اینو
بزنم دو داد بهم نشون میده که دستور آخری
که اجرا شده خطا داده خیلی کاربرد داره
این بچهها و توی اسکریپت نوشتن خیلی جاش
استفاده میشه میکنیم. خب
بذارید ببینم مثال دیگهای داره
توضیحاتشو داره میده و کاری با اینا نداریم.
خب بریم درس بعدی. فکر کنم دیگه کفایت کنه همین اندازه.
خب یه نکتهای داره میگه که ما یه دستوری داریم به نام اکسیت ما میتونیم خودمون
خطا رو ایجاد بکنیم مثلاً بگیم اکسیت زیرو
یعنی اسکریپته ما موفقیت اجرا شده اکسید
وان یعنی اسکریپته یه خطایی داده اینو
بعداً جلوتر میبینیم که مثلاً جاهایی که
میخوایم ارور هندلینگ بکنیم میایم از این
روش استفاده میکنیم به اون ماژول رسیدیم
حتماً اینو خواهیم دید
مثالشو زده مثلاً مثلاً یه اسکریپتی نوشته
بعد اجراش کرده و پنجو برگردونده چون اینجا
خودمون پنجو برگردوندیم
خب نکته دیگهای نداره خب بریم سراغ نکته بعدیمون
میگه که ما تا الان چیزی که دیدیم تو
اسکریپتها این بود که اومدیم تو هر خط یک
دستورو نوشتیم اگه بخوایم
چند تا دستور رو تو یه خط بنویسیم باید
بینشون سمیکالن بذاریم. سمیکالن به در
حقیقت بش میفهمونه که این دستور اینجا
تمام شده و داره میره سراغ دستور جدید. پس
اگه شما بخواید هر خط یه دستور بنویسید که
به این شکل اجرا میشه هیچ مشکلی هم نیست.
اما اگه به هر دلیلی تمایل داشتید که تو
یه خط چند تا دستیرو پشت هم بنویسید باید
بینشون سمی کالم بذارید. بچهها یه نکته
بگما این ربطی به اون مفهوم پایپ و اینا
ندارهها که خلوجی یه دستیرو بده به دستور
بعدی این ربطی به اون نداره اینا داره
مستقل از همدیگه اجرا میشه پس این نکته رو
دقت بکنید
خب بریم سراغ موضوع بعدی ما توی نوشتارمون توی اسکریپت یه دبل
کوتیشن داریم یه سینگل کوتیشن داریم خب
این د تا چه تفاوتی با هم دارن و چه
کاربردی دارن
فرض کنید شما میخواید یه همچین چیزی رو
تو خروجی داشته باشید چون بینشون اسپیس
وجود داره احتمال دارید لینوکس اینو به
عنوان دستورهای مختلف در نظر بگیره برای
اینکه این اتفاق نیفته میان چیکار میکنن
میان اینو میذارن بین مثلاً دبل کوتیشن
اگر اینو بین دبل کوتیشن نذاریم چه اتفاقی
میفته
این رو به عنوان د تا آرگومان ورودی
امکادیا رو تشخیص میده میاد د تا
دایرکتوری میسازه. یکی به اسم ما، یکی به
اسم بکآپ. در صورتی که نیت من چی بوده؟
این بوده که یک دایرکتوری به اسم مای بکآپ
ساخته بشه. پس باید اینو بیاید بین دبل
کوتیشن قرار بدید.
در اصل دبل کوتیشن به شلمون میفرمونه که
این یک واحده جدا از همدیگه نیستن.
خب سینگل کوتیشنم همین کارو میکنه. تفاوتش چیه؟
آها
اینجا نگاه کنید
توی سینگل کوتیشن
هر چیزی که داخلش بنویسید بچهها به عنوان
یک متن در نظر گرفته میشه
یعنی اینو به عنوان یک متغیر هوم در نظر
نمیگیره چون توی شعر زمانی که شما یه
همچین علامتی رو پشت یک عبارتی میذارید
یه متغیر میده اما چون سینگل کوتیشن
گذاشتید این به عنوان تکست در نظر میگیره
خروجی همینو چاپ میکنه خب اما اگه اینو
ببرید توی دبل کوتیشن این مفهوم متغیر هوم
رو داره و خروجی میشه این پس اگه جایی
قرار بود اون وسط مستطهای متنتون یک عبارت
خاصی رو استفاده بکنید باید دبل کوتیشن
بذارید اگر نه که همون سینگل کوتیشن کارو
درمیاره
مفهوم بعدی که میخوایم راجع بهش صحبت کنیم بهش میگن اسکیپ کرکتر
امکان داره یه جایی ما اصلاً تعمداً
بخوایم این علامت دالرو چاپ بکنیم خود
علامت دالر رو میخوایم چاپ کنیم علامت
دالر توی لینوکس مفهوم متغیر یا وریبلو
میده یعنی شما وقتی میرسید دالر ۱۰۰ میره
دنبال دنبال متغیری میگرده به اسم سطح
البته به شرطی که داخل دبل کوتیشن باشه خب
پس اگه من خود همین داله رو بخوام چاپ کنم
دچار مشکل میشم برای اینکه این اتفاق
نیفته میام چیکار میکنم میام یه دونه از
این اسلشا قبلش میذارم
این یعنی چی به بش میفهمونه که منظور من
از این متغیر هوم نیست منظورم خود همین
تکست همین متنه
پس اگه جایی میخواستید یکی از این
اسپیشال کرکترها مثل مثلاً همین داله رو
خود حتی دبل کوتیشن رو بخواستی چاپ بکنی
یا ستاره رو باید قبلش یه دونه از این
اسلشها بذارید.
اگه نذارید منظوری که داره میرسونه یعنی
متغیر هوم.
خب این از این
یا مثلاً فرض کنید میخواید این دبل
کوتیشنو چاپ کنید اگه اینجوری بنویسید
خیلی شکل بدی پیدا میکنه باید بیاید
دقیقاً اینجوری قبل هر دبل کوتیشن یه دونه
از این ویل بیلکها بذارید که بیاد خود دبل
کوتیشن روم تو خروجی بهمون نشون بده
اینو دیدیم
حتی خود بک اسلشم اگه بخواد نشون بده باید
یه بک اسلش قبلش بزنه من اشتباه بالا گفتم
اسلش بین این بک اسلشه
اصلاً برای نمایش دایرکتوری خیلی کاربرد داره. شما میخواید خود اسلشو نشون بک
اسلشو نشون بدی یه بک اسلشم میاد قبلش
میذارید میفهمونید که منظور من از این
خودشه.
بک اسلش ان یعنی میره خط بعدی یعنی لینوکسو چاپ میکنه بعد میاد میره خط بعدی
سروررو چاپ میکنه و دوباره میره خط بعدی
یعنی کرسلونو میبره خط بعدی
ولی
تو پرینت اف بچهها این یعنی خط بعدی تو اکو خط بعدی معنی نمیده این یادتون باشه
اگه بخواید خط بعدی
باشه میگه باید یه دش ای بذارید یا پرینتف
استفاده کنید کلاً بچهها پرینتف فرقش با
اکوینه که تو پرینتف شما دستتون بازه که
بیاد یه سری کارای اضافه انجام بدید تو
خروجیتون یعنی اگه مثلاً میخواستی یک
فرمت خاصی داشته باشه
اسلش ان نیو لاینه اسلش تی تب یه فاصله
میندازه
و همین بریم شما درس بعدی
خب کمکم دیگه داریم وارد قسمت جالب
اسکریپت میشیم میخوایم راجع به وریبل
صحبت بکنیم وریبر به چه دردی میخوره کلاً
بچهها وریبل تو هر زبان برنامهنویسی
برای اینه که شما یک مقداری رو ذخیره
بکنید که لازم نباشه هی مرتب اون مقداره
رو بنویسید و فقط صرفاً اشاره بکنید به
اون وریبل. یه مثال
بحث شما میخواید یه همچین چیزی رو
اسکریپتشو بنویسید. تو این اسکریپته تو هر
خط یه چیزی هی داره تکرار میشه. میبینید؟
خب برای اینکه جلو اینو بگیریم میایم از
وریبل استفاده میکنیم. این مسیر چیه؟
مثلاً فرض کنید مسیریه که بعد بکآپمون
اونجاست. حالا فرض کنید در آینده مثلاً
دایرکتوری بکآپ شما عوض بشه چه اتفاقی
میفته؟ شما باید تو تمام اسکریپتاتون برید
این مسیره رو دونه دونه دستی عوض کنید تا
یه کار خیلی طولانی و بقگیره برای میاید
چیکار میکنید؟ مید یک وریبل تعریف
میکنید و دیگه از اون وریبله استفاده
میکنید. حالا اگر این مسیر بکآپم عوض بشه
شما فقط کافیه بیاید تو این وریبل اینو
عوض بکنید.
این میشه مفهوم وریبل داخل اسکریپتینگ. برای دسترسی به مقدار یک وریبل هم از
علامت دالر استفاده میکنیم. قبل اسم
وریبل با دبل کوتیشن.
دقت کنید حتما دبل کوتیشن باشه مثلاً
اینجا نگاه کنید
من این متغیر تعریف میکنم اسمشون میذارم
نیم
مساوی مثلاً سفیده
حالا اگه هر جایی بنویسم اکو نیم سپید رو بهم برمیگردون
و این داخل اسکیپ نویسی خیلی کاربرد داره
آها میگه که اطراف این نباید اسپیس بذارید اسپیس بذاریم چی میشه ببینیم با همدیگه
مثلاً من یه نیم دو یه تو اسپیس مثلاً
سفیدای دو
آها میگه کامند فند آ
به عنوان کامند داره در نظر میگیره جالبه
ولی اگه همینو اینجوری کنیم احتمالاً قبول
میکنه دقیقاً پس اسپیس نباید بذارید باید
اینو کاملاً به همدیگه بچسبونیدش
میگه بهتره که بچهها اگه قراره متغیر تعریف بکنید از جنس متنه حتماً دو طرفش
دبل کوتیشن بذارید بهتره عادت بکنید که
این کارو بکنید
قوان پایه نامگذاری یکی از این بهتره که یا با آندر اسکور شروع بشه وریبل اسمش یا
با یک حرف شروع بشه
بهتره اینجوری باشه نباید با عدد شروع بشه
اسم یه وریبل بچهها یعنی مثلاً یا باید
اینجوری باشه یادر اسکور باشه یا عدد
ببرید آخرش یک سرور مناسب نیست اصلاً شاید
قبول نکنه
بخش بچهها به بزرگی و کوچیکی حروف حساسه یعنی اینا س۳ تا وریبل مختلف هستن پس اینم
دقت بکنید
میگه معمولاً برای نامگذاری وریبلها از این روش استفاده میشه مثلاً میا کلماتو
پشت هم مینویسم بینشون یه آندر اسکور
میذارم.
یه مثال واقعی هم اینجا زده مثلاً اومده این اومده مشخص کرده که این فایل اسکریپت
باید توسط چه بشی اجرا بشه گفتش توسط خود
بش اجرا بشه اسم سروررو گذاشته بکآپ
دایرکتوریو گذاشته سرویس نیمو گذاشته لاک
فایل کجا باشه و ترشولدو مشخص کرده بعد از
این وریبلو اومده این پایین اسلاید دیگه
حالا ما جلوتر بریم بهال خیلی قشنگتر
خواهیم دیدم
کفایت میکنه بریم بیایم ادامهشو جلسه بعدی صحبت کنیم فعلاً خداحافظ
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
استفاده از متغیر وضعیت به بررسی موفقیت یا شکست دستورات در اسکریپت کمک میکند و به مدیریت خطا و عملیات خودکار کمک مینماید.
دبل کوتیشن به پردازش متغیرها درون آنها اجازه میدهد، در حالی که سینگل کوتیشن متغیرها را نادیده میگیرد.
برای چاپ اسکیپ کرکترها، از بک اسلش (\) استفاده میشود.
آخرین بهروزرسانی محتوای متنی:
🎓 دوره جامع «متخصص مهندسی داده و بیگ دیتا» | Pista Academy در دنیای امروز، حجم عظیمی از دادهها هر روز توسط سازمانها، کسبوکارها و سرویسهای آنلاین تولید میشود؛ اما داده زمانی ارزشمند است که بتوانیم آن را بهدرستی جمعآوری، ذخیره، پردازش و مدیریت کنیم. در دوره «متخصص مهندسی داده و بیگ دیتا» در Pista Academy، قدمبهقدم با مفاهیم، ابزارها و تکنولوژیهای مهم حوزه Data Engineering و Big Data آشنا میشویم و تلاش میکنیم مسیر یادگیری را از مفاهیم پایه تا ابزارهای حرفهای این حوزه طی کنیم. 📚 در این دوره با موضوعاتی مانند موارد زیر آشنا خواهید شد: 🔹 Linux Server و ابزارهای موردنیاز مهندسی داده 🔹 Python و Java برای کار با ابزارهای Data Engineering 🔹 مفاهیم دادههای توزیعشده و پایگاه داده 🔹 پایگاه دادههای رابطهای و SQL 🔹 پایگاه دادههای NoSQL 🔹 مفاهیم Big Data 🔹 اکوسیستم Hadoop 🔹 کار با ابزارهای Hadoop و مثالهای کاربردی 🔹 Apache Spark و پردازش دادههای حجیم 🔹 کار عملی با ابزارهای Spark 🔹 Kubernetes 🔹 خودکارسازی و مدیریت فرایندهای انتشار در مهندسی داده 🎯 این دوره برای چه کسانی مناسب است؟ اگر قصد دارید وارد حوزه مهندسی داده شوید، دانش خود را در زمینه Big Data گسترش دهید یا با ابزارهایی مانند Hadoop، Spark، SQL، NoSQL و Kubernetes بهصورت جدیتر آشنا شوید، این دوره میتواند مسیر مناسبی برای شروع و توسعه مهارتهای شما باشد. در طول دوره تلاش میکنیم مفاهیم را به زبان ساده و کاربردی بررسی کنیم و در کنار مباحث تئوری، با ابزارها و سناریوهای واقعی نیز آشنا شویم. ━━━━━━━━━━━━━━━━━━ 📌 نام دوره: متخصص مهندسی داده و بیگ دیتا 🏫 Pista Academy آموزش تخصصی، ساده و کاربردی اگر این آموزش برای شما مفید بود، با 👍 لایک کردن ویدیو و Subscribe کردن کانال Pista Academy از ادامه تولید آموزشهای تخصصی حمایت کنید. همچنین اگر درباره مباحث دوره سؤال یا پیشنهادی دارید، در بخش نظرات مطرح کنید. 👇 #مهندسی_داده #بیگ_دیتا #DataEngineering #BigData #Python #SQL #NoSQL #Hadoop #Spark #Kubernetes #PistaAcademy