اصول لینوکس و اسکریپت نویسی یکی از ضروریترین مهارتهای یک مهندس DevOps است. اکثر شرکتها محیط خود را روی لینوکس دارند، همچنین بسیاری از ابزارهای CM مانند Puppet، Chef و Ansible دارای گرههای اصلی خود در لینوکس هستند. در این مطلب، کل دستورات لینوکس را برای DevOps که بخشی ضروری از برنامه تحصیلات تکمیلی در DevOps است، پوشش خواهیم داد.
لینوکس چیست؟
لینوکس یک سیستم عامل متنباز و توسعه یافته برای کامپیوترها، سرورها، دستگاههای تلفن همراه و دستگاههای تعبیه شده است. تقریبا بر روی هر پلتفرم کامپیوتر اصلی از جمله x86، ARM و غیره پشتیبانی میشود که آن را به یکی از گسترده ترین سیستم عاملهای پشتیبانی شده تبدیل مینماید.
طراحی لینوکس شبیه یونیکس است، اما به گونهای تکامل یافته است که بر روی انواع سختافزار از تلفنها گرفته تا ابررایانهها اجرا میشود. هر سیستم عامل مبتنی بر لینوکس حاوی کرنل لینوکس که منابع سخت افزاری را مدیریت میکند و مجموعهای از بستههای نرم افزاری است که بقیه سیستم عامل را تشکیل میدهد.
چرا لینوکس محبوب است؟
لینوکس در بسیاری از جنبههای مهم با بقیه سیستم عاملها متفاوت است. برخی از آنها به شرح زیر است
- رایگان – اول و شاید مهمتر از همه، لینوکس رایگان است. برای دانلود و استفاده از آن، برخلاف ویندوز، لازم نیست مبلغی را خرج کنید.
- متنباز – لینوکس نرم افزار متنباز است. کد مورد استفاده برای ایجاد لینوکس رایگان است و برای مشاهده، ویرایش و برای کاربرانی که مهارتهای مناسب را دارند، در دسترس عموم است.
- ایمن – هنگامی که لینوکس را روی سیستم خود نصب کردید، دیگر نیازی به استفاده از آنتی ویروس نیست! لینوکس یک سیستم بسیار امن است. علاوه بر این، یک جامعه توسعه جهانی وجود دارد که مدام به دنبال راههایی برای افزایش امنیت خود است. هر ارتقاء سیستم عامل را ایمنتر و قویتر میکند.
- پایداری و عملکرد – لینوکس پایداری بسیار بالایی را ارائه میدهد، یعنی پس از مدت کوتاهی نیازی به راه اندازی مجدد ندارد. سیستم لینوکس شما به ندرت کند شده یا فیریز میگردد. شما میتوانید بدون هیچ گونه اختلالی در سیستمهای لینوکس خود کار کنید. لینوکس عملکرد فوق العاده بالایی را در شبکهها و ایستگاههای کاری مختلف ارائه میدهد.
دستورات لینوکس برای DevOps
در این بخش، به پرکاربردترین دستورات لینوکس برای DevOps، نگاهی خواهیم داشت.
دستور ls
این دستور لینوکس تمام محتویات دایرکتوری فعلی را فهرست میکند.
$ ls
دستور sudo
این دستور فقط آن دستور را با امتیازات root/superuser اجرا میکند.
$ sudo
دستور Cat
این دستور لینوکس می تواند فایلهای متنی را بخواند، تغییر دهد یا به هم متصل کند. همچنین محتویات فایل را نمایش میدهد.
$ cat
دستور grep
این دستور لینوکس یک رشته/کلمه خاص را در یک فایل متنی جستجو میکند. شبیه به Ctrl+F است اما از طریق یک CLI اجرا میشود.
$ grep
دستور sort
این دستور نتایج جستجو را بر اساس حروف الفبا یا عدد مرتب میکند. همچنین فایلها، محتویات فایلها و دایرکتوریها را مرتب مینماید.
$ sort
دستور tail
مکمل دستور head است. دستور tail همانطور که از نام پیداست، آخرین N عدد از دادههای ورودی داده شده را چاپ میکند. به طور پیش فرض 10 خط آخر فایلهای مشخص شده را چاپ مینماید. اگر بیش از یک نام فایل بدهید، دادههای هر فایل با نام فایل آن قبل از آن قرار میگیرند.
tail [OPTION]... [FILE]...
tail -n 3 state.txt or tail -3 state.txt => -n for no. of lines
tail +25 state.txt
c num- : آخرین بایت num را از فایل مشخص شده چاپ میکند.
دستور chown
کاربران مختلف در سیستم عامل دارای مالکیت و مجوز برای اطمینان از ایمن بودن فایلها هستند و محدودیتهایی را برای افرادی که میتوانند محتوای فایلها را تغییر دهند، اعمال میکنند. در لینوکس کاربران مختلفی وجود دارند که از سیستم استفاده میکنند:
- هر کاربر دارای برخی ویژگیهای مرتبط با خود است، مانند user ID و home directory. میتوانیم کاربران را به یک گروه اضافه کنیم تا فرآیند مدیریت کاربران آسانتر شود.
- یک گروه میتواند صفر یا چند کاربر داشته باشد. یک کاربر مشخص شده با یک گروه پیش فرض مرتبط است. همچنین می تواند عضو گروههای دیگر در سیستم نیز باشد.
مالکیت و مجوزها: برای محافظت و ایمن سازی فایلها و دایرکتوریها در لینوکس، از مجوزها برای کنترل کارهایی که کاربر میتواند با یک فایل یا دایرکتوری انجام دهد استفاده میکنیم. لینوکس از سه نوع مجوز استفاده میکند:
- Read: این مجوز به کاربر اجازه میدهد فایلها را بخواند و در دایرکتوریها به کاربر اجازه میدهد دایرکتوریها و زیر شاخهها را در آن ذخیره کند.
- Write: این مجوز به کاربر اجازه میدهد تا یک فایل را اصلاح و حذف کند. همچنین، به کاربر اجازه میدهد تا محتویات خود را (ایجاد، حذف و تغییر نام فایلها در آن) را برای دایرکتوریها تغییر دهد. تا زمانی که مجوز اجرا را به دایرکتوریها ندهید، تغییرات بر آنها تاثیر نمیگذارد.
- Execute: مجوز نوشتن روی یک فایل، فایل را اجرا میکند. به عنوان مثال، اگر فایلی به نام sh داشته باشیم تا زمانی که به آن اجازه اجرا ندهیم، اجرا نخواهد شد.
انواع مجوزهای فایل:
- User: این نوع مجوز فایل بر صاحب فایل تاثیر میگذارد.
- Group: این نوع مجوز فایل بر گروهی که مالک فایل است تاثیر میگذارد. اگر کاربر مالک در این گروه باشد، به جای مجوزهای گروه، مجوزهای کاربر اعمال میشود.
- Other: این نوع مجوز فایل بر سایر کاربران سیستم تاثیر میگذارد.
توجه: برای مشاهده مجوزهایی که استفاده می کنیم:
ls -l
دستور chown برای تغییر مالک یا گروه فایل استفاده میشود. هر زمان که میخواهید مالکیت را تغییر دهید می توانید از دستور chown استفاده کنید.
chown [OPTION]… [OWNER][:[GROUP]] FILE…
chown [OPTION]… –reference=RFILE FILE…
مثال: برای تغییر مالک فایل:
chown owner_name file_name
chown master file1.txt
Master کاربر دیگری در سیستم است. فرض کنید که اگر کاربر با نام user1 هستید و میخواهید مالکیت را به root تغییر دهید (جایی که دایرکتوری فعلی شما user1 است). قبل از سینتکس از sudo استفاده کنید.
sudo chown root file1.txt
خرید وی پی اس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
دستور chmod
این دستور برای تغییر مجوز دسترسی فایلها و دایرکتوریها استفاده میشود.
chmod
4 – read permission
2 – write permission
1 – execute permission
0 – no permission
دستور lsof
در حین کار در سیستم لینوکس ممکن است چندین فایل و پوشه استفاده شود که برخی از آنها قابل مشاهده و برخی دیگر نیستند. دستور lsof مخفف List Of Open File است. این دستور لیستی از فایلهای باز شده را ارائه داده و اطلاعاتی را در اختیار شما قرار میدهد تا بفهمید فایلهایی که با کدام فرآیند باز میشوند. با یک حرکت تمام فایلهای باز موجود در کنسول خروجی را فهرست میکند.
$lsof [option][user name]
گزینه ها با مثال:
List all open files: این دستور تمام فایلهایی که توسط هر فرآیندی در سیستم باز میشوند را فهرست میکند.
~$ lsof
در اینجا، مشاهده میکنید که جزئیات فایلهای باز شده وجود دارد. ProcessId، کاربر مرتبط با فرآیند، FD (file descriptor)، اندازه فایل با هم اطلاعات دقیقی در مورد فایل باز شده توسط دستور، شناسه فرآیند، کاربر، اندازه آن و غیره میدهد.
- FD به عنوان توصیفگر فایل نشان داده میشود
- cwd: دایرکتوری کاری فعلی
- txt: فایل متنی
- mem: فایل حافظه
- mmap: دستگاه دارای نقشه حافظه
لیست تمام فایلهای باز شده توسط یک کاربر: چندین کاربر در یک سیستم وجود دارد و هر کاربر نیازهای متفاوتی دارد و بر این اساس از فایل ها و دستگاه ها استفاده می کند. برای یافتن لیستی از فایلهایی که توسط یک کاربر خاص باز میشوند، این دستور مفید است.
lsof -u username
در کنار آن میتوانیم نوع فایل را در اینجا ببینیم و آنها عبارتند از:
- DIR: دایرکتوری
- REG: فایل معمولی
- CHR: فایل کاراکتر خاص
دستور ifconfig
دستور ifconfig برای پیکربندی رابطهای شبکه kernel-resident استفاده میشود. در زمان بوت برای تنظیم رابطها در صورت لزوم استفاده میشود. پس از آن، معمولا در صورت نیاز در هنگام اشکال زدایی یا زمانی که نیاز به تنظیم سیستم دارید استفاده میشود. همچنین از این دستور برای تخصیص آدرس IP و netmask به یک رابط یا فعال یا غیرفعال کردن یک رابط استفاده میشود.
ifconfig [...OPTIONS] [INTERFACE]
options:
-a : این گزینه برای نمایش تمام رابط های موجود حتی اگر خاموش باشند استفاده میشود.
ifconfig -a
-s : یک لیست کوتاه به جای جزئیات نمایش داده میشود.
ifconfig -s
دستور id
دستور id در لینوکس برای پیدا کردن نام کاربر و گروه و شناسه عددی (UID یا شناسه گروه) کاربر فعلی یا هر کاربر دیگری در سرور استفاده میشود. این دستور برای یافتن اطلاعات زیر مفید است:
- نام کاربری و شناسه کاربری واقعی
- UID کاربران خاص را بیابید.
- UID و همه گروه های مرتبط با یک کاربر را نشان دهید.
- تمام گروه هایی که یک کاربر به آنها تعلق دارد را فهرست کنید.
- نمایش زمینه امنیتی کاربر فعلی
id [OPTION]… [USER]
options:
- g- : فقط شناسه گروه موثر را چاپ کنید
- G- : تمام شناسه های گروه را چاپ کنید
- n- : نام را به جای عدد چاپ میکند
- r- : شناسه واقعی را به جای اعداد چاپ میکند
- u- : فقط شناسه کاربر موثر را چاپ می کند
- help-- : نمایش پیام های راهنما و خروج
- version-- : نمایش اطلاعات نسخه و خروج
توجه: بدون هیچ گزینه ای، هر مجموعه ای از اطلاعات شناسایی شده مانند شناسه های عددی را چاپ می کند.
مثال ها:
برای چاپ شناسه خود بدون هیچ گزینه:
id
خروجی شناسه UID کاربر فعلی و GID را نشان می دهد.
یک شناسه کاربر خاص را پیدا کنید: حالا فرض کنید یک کاربر به نام master داریم، برای یافتن UID او از دستور استفاده می کنیم:
id -u master
یک GID کاربر خاص را دریافت کنید: دوباره با فرض یافتن GID اصلی، از دستور استفاده خواهیم کرد:
id -g master
UID و همه گروههای مرتبط با یک نام کاربری را بشناسید: در این حالت از کاربر Master برای پیدا کردن UID و همه گروههای مرتبط با آن استفاده میکنیم، از دستور استفاده کنید:
id master
برای پیدا کردن همه گروههایی که یک کاربر به آنها تعلق دارد: نمایش UID و همه گروههایی که یک کاربر "master" به آنها تعلق دارد:
id -G master
دستور cut
دستور Cut برای استخراج بخشی از یک فایل با استفاده از ستونها و جداکنندهها استفاده میشود. اگر میخواهید همه چیز را در یک ستون انتخابی فهرست کنید، از پرچم -c با دستور cut استفاده کنید. برای مثال، اجازه میدهیم دو ستون اول را از فایل demo1.txt انتخاب کنیم.
cut -c1-2 demo1.txt
دستور sed
Sed یک ویرایشگر متن است که می تواند عملیات ویرایش را به صورت غیر تعاملی انجام دهد. دستور sed ورودی خود را از ورودی استاندارد یا یک فایل برای انجام عملیات ویرایش روی یک فایل دریافت می کند. Sed یک ابزار بسیار قدرتمند است و شما می توانید بسیاری از دستکاری های فایل را با استفاده از sed انجام دهید. من عملیات مهمی که ممکن است بخواهید با یک فایل متنی انجام دهید را توضیح خواهم داد.
اگر می خواهید متنی را در یک فایل با جستجوی آن در یک فایل جایگزین کنید، می توانید از دستور sed با پرچم جایگزین s برای جستجوی الگوی خاص و تغییر آن استفاده کنید.
به عنوان مثال، اجازه دهید mikesh را در فایل test.txt با Mukesh جایگزین کنیم.
sed 's/mikesh/mukesh/' test.txt
دستور diff
دستور diff برای پیدا کردن تفاوت بین دو فایل استفاده می شود. این دستور فایل ها را تجزیه و تحلیل می کند و خطوط غیر مشابه را چاپ می کند. فرض کنید دو فایل test و test1 داریم. با استفاده از دستور زیر می توانید تفاوت بین دو فایل را پیدا کنید.
سینتکس
diff test.txt test1.txt
دستور history
دستور history برای مشاهده دستور اجرا شده قبلی استفاده می شود. این ویژگی در پوسته Bourne موجود نبود. Bash و Korn از این ویژگی پشتیبانی می کنند که در آن هر فرمان اجرا شده به عنوان رویداد در نظر گرفته می شود و با یک شماره رویداد مرتبط است که با استفاده از آن می توان آنها را فراخوانی کرد و در صورت لزوم تغییر داد. این دستورات در یک فایل تاریخچه ذخیره می شوند. در Bash shell history فرمان کل لیست دستور را نشان می دهد.
سینتکس:
$ history
برای نشان دادن تعداد محدودی از دستوراتی که قبلا اجرا شده است به صورت زیر:
$ history 10
دستور DD
dd یک ابزار خط فرمان برای سیستم عامل های یونیکس و یونیکس مانند است که هدف اصلی آن تبدیل و کپی فایل ها است.
- در یونیکس، درایورهای دستگاه برای سختافزار (مانند درایوهای دیسک سخت) و فایلهای دستگاه خاص (مانند /dev/zero و /dev/random) مانند فایلهای معمولی در سیستم فایل ظاهر میشوند.
- dd همچنین میتواند از/به این فایلها بخواند و/یا بنویسد، مشروط بر اینکه تابع در درایورهای مربوطه آنها پیادهسازی شود.
- در نتیجه، dd را می توان برای کارهایی مانند پشتیبان گیری از بخش بوت هارد دیسک و به دست آوردن مقدار ثابتی از داده های تصادفی استفاده کرد.
- برنامه dd همچنین میتواند در هنگام کپی کردن دادهها، تبدیلهایی از جمله تعویض ترتیب بایت و تبدیل به و از کدگذاریهای متنی ASCII و EBCDIC انجام دهد.
استفاده: سینتکس خط فرمان dd با بسیاری از برنامههای یونیکس دیگر متفاوت است، زیرا از syntax option=value برای گزینههای خط فرمان خود به جای فرمتهای -option value یا –option=value استانداردتر استفاده میکند. به طور پیش فرض، dd از stdin می خواند و به stdout می نویسد، اما این موارد را می توان با استفاده از گزینه های if (فایل ورودی) و of (فایل خروجی) تغییر داد.
چند مثال عملی در دستور dd:
برای تهیه نسخه پشتیبان از کل هارد دیسک: برای تهیه نسخه پشتیبان از کل یک هارد دیسک در هارددیسک دیگری که به همان سیستم متصل است، دستور dd را مطابق شکل اجرا کنید. در این مثال دستور dd، نام دستگاه یونیکس دیسک سخت منبع /dev/hda و نام دستگاه دیسک سخت هدف /dev/hdb است.
# dd if = /dev/sda of = /dev/sdb
- if نمایانگر فایل ورودی و "of" نشان دهنده فایل خروجی است. بنابراین کپی دقیق /dev/sda در /dev/sdb موجود خواهد بود.
- در صورت وجود هر گونه خطایی، دستور بالا از کار خواهد افتاد. اگر پارامتر "conv=noerror" را بدهید، در صورت وجود خطاهای خواندن، به کپی کردن ادامه خواهد داد.
- فایل ورودی و خروجی باید با دقت ذکر شود. فقط در صورتی که دستگاه منبع را در هدف ذکر کنید و بالعکس، ممکن است تمام داده های خود را از دست بدهید.
دستور find
دستور find در یونیکس یک ابزار خط فرمان برای پیمودن سلسله مراتب فایل است. می توان از آن برای یافتن فایل ها و دایرکتوری ها و انجام عملیات های بعدی بر روی آنها استفاده کرد. از جستجو بر اساس فایل، پوشه، نام، تاریخ ایجاد، تاریخ اصلاح، مالک و مجوزها پشتیبانی می کند. با استفاده از "-exec" می توان سایر دستورات یونیکس را روی فایل ها یا پوشه های یافت شده اجرا کرد.
سینتکس :
$ find [where to start searching from]
[expression determines what to find] [-options] [what to find]
options :
- exec CMD- : فایلی که در حال جستجو است که معیارهای فوق را برآورده می کند و برای اجرای موفقیت آمیز دستور، 0 را به عنوان وضعیت خروج برمی گرداند.
- ok CMD- : مانند -exec کار می کند به جز اینکه ابتدا از کاربر خواسته می شود.
- inum N- : فایل هایی با شماره inode 'N' را جستجو کنید.
- links N- : فایلهایی را با پیوند «N» جستجو کنید.
دستور free
در لینوکس یک ابزار خط فرمان برای این وجود دارد و آن دستور free است که کل فضای خالی موجود را به همراه مقدار حافظه استفاده شده و جابجایی حافظه در سیستم و همچنین بافرهای استفاده شده توسط کرنل را نمایش می دهد.
این تقریبا همان کاری است که دستور رایگان برای شما انجام می دهد.
سینتکس:
$free [OPTION]
OPTION: به گزینه های سازگار با دستور آزاد اشاره دارد.
از آنجایی که free جزئیات حافظه مربوط به سیستم شما را نمایش می دهد، سینتکس آن نیازی به ارسال آرگومان ندارد، بلکه فقط به گزینه هایی نیاز دارد که می توانید مطابق میل خود از آنها استفاده کنید.
استفاده از دستور free
$free
هنگامی که هیچ گزینهای استفاده نمیشود، دستور free خروجی ستونی را همانطور که در بالا نشان داده شده است، تولید می کند که در آن ستون:
- total کل حافظه نصب شده را نمایش می دهد (MemTotal و SwapTotal e موجود در /proc/meminfo).
- used حافظه استفاده شده را نشان می دهد.
- free حافظه استفاده نشده را نمایش می دهد.
- اشتراک گذاری حافظه مورد استفاده توسط tmpfs را نمایش می دهد (Shmen در /proc/meminfo موجود است و در صورتی که در دسترس نباشد صفر را نمایش می دهد).
- buffers حافظه استفاده شده توسط بافرهای هسته را نمایش می دهد.
- cache حافظه مورد استفاده توسط کش صفحه و اسلب ها را نمایش می دهد (Cached و Slab موجود در /proc/meminfo).
- buffers/cache مجموع بافرها و کش را نمایش می دهد.
گزینههایی برای دستور free
- b، - -bytes- : حافظه را بر حسب بایت نمایش میدهد.
- k، – -kilo- : مقدار حافظه را بر حسب کیلوبایت نمایش میدهد (پیش فرض).
- m, – -mega- : مقدار حافظه را بر حسب مگابایت نمایش میدهد.
- g, – -giga- : مقدار حافظه را بر حسب گیگابایت نمایش میدهد.
دستور ssh-keygen
از دستور ssh-keygen برای ایجاد یک جفت کلید احراز هویت عمومی/خصوصی استفاده کنید. کلیدهای احراز هویت به کاربر این امکان را می دهد که بدون ارائه رمز عبور به یک سیستم راه دور متصل شود. کلیدها باید برای هر کاربر جداگانه تولید شوند. اگر جفتهای کلید را بهعنوان کاربر اصلی ایجاد کنید، فقط root میتواند از کلیدها استفاده کند.
مثال زیر بخش های عمومی و خصوصی یک کلید RSA را ایجاد می کند:
ssh-keygen -t rsa
از گزینه –t برای تعیین نوع کلید برای ایجاد استفاده کنید. مقادیر ممکن "rsa1" برای پروتکل نسخه 1 و "dsa"، "ecdsa" یا "rsa" برای پروتکل نسخه 2 هستند.
شما می توانید یک عبارت عبور برای رمزگذاری قسمت خصوصی کلید تعیین کنید. اگر کلید شخصی خود را رمزگذاری می کنید، باید هر بار که از کلید استفاده می کنید عبارت عبور را وارد کنید. این امر مانع از این می شود که مهاجمی که به کلید خصوصی شما دسترسی دارد و می تواند جعل هویت شما باشد و به تمام رایانه هایی که به آنها دسترسی دارید دسترسی داشته باشد، نتواند این کار را انجام دهد. مهاجم همچنان باید عبارت عبور را ارائه کند.
دستور ip
دستور ip در لینوکس در net-tools وجود دارد که برای انجام چندین کار مدیریت شبکه استفاده می شود. این دستور برای نمایش یا دستکاری مسیریابی، دستگاه ها و تونل ها استفاده می شود. این دستور برای انجام چندین کار مانند تخصیص آدرس به یک رابط شبکه یا پیکربندی پارامترهای رابط شبکه استفاده می شود. میتواند چندین کار دیگر مانند پیکربندی و اصلاح مسیریابی پیشفرض و ثابت، راهاندازی یک تونل روی IP، فهرست کردن آدرسهای IP و اطلاعات دارایی، تغییر وضعیت رابط، تخصیص، حذف و تنظیم آدرسها و مسیرهای IP را انجام دهد.
سینتکس:
ip [ OPTIONS ] OBJECT { COMMAND | help }
گزینه ها:
address- : این گزینه برای نمایش تمام آدرس های IP مرتبط با تمام دستگاه های شبکه استفاده می شود.
ip address
link- : برای نمایش اطلاعات لایه پیوند استفاده می شود، ویژگی های دستگاه های لایه پیوند در حال حاضر موجود را واکشی می کند. هر دستگاه شبکه ای که دارای درایور بارگذاری شده باشد می تواند به عنوان یک دستگاه در دسترس طبقه بندی شود.
ip link
دستور nslookup
Nslookup (مخفف "Name Server Lookup") یک دستور مفید برای دریافت اطلاعات از سرور DNS است. این یک ابزار مدیریت شبکه برای پرس و جو از سیستم نام دامنه (DNS) برای به دست آوردن نقشه دامنه یا آدرس IP یا هر رکورد DNS خاص دیگری است. همچنین برای عیب یابی مشکلات مربوط به DNS استفاده می شود.
سینتکس:
nslookup [option]
گزینه های دستور nslookup:
nslookup google.com:
nslookup به دنبال نام دامنه "یک رکورد" (آدرس IP) دامنه را نمایش می دهد. از این دستور برای یافتن رکورد آدرس یک دامنه استفاده کنید. به سرورهای نام دامنه پرس و جو می کند و جزئیات را دریافت می کند.
دستور curl
curl یک ابزار خط فرمان برای انتقال داده ها به یا از سرور با استفاده از هر یک از پروتکل های پشتیبانی شده (HTTP، FTP، IMAP، POP3، SCP، SFTP، SMTP، TFTP، TELNET، LDAP یا FILE) است. این دستور توسط Libcurl ارائه می شود. این ابزار برای اتوماسیون ترجیح داده می شود زیرا برای کار بدون تعامل کاربر طراحی شده است. این می تواند چندین فایل را به طور همزمان انتقال دهد.
سینتکس:
curl [options] [URL...]
ابتدایی ترین استفاده از curl تایپ دستور و سپس URL است.
curl https://www.python.org
-o : فایل دانلود شده را با نام ارائه شده در پارامترها در ماشین محلی ذخیره می کند.
سینتکس:
curl -o [file_name] [URL...]
مثال:
curl -o hello.zip ftp://speedtest.tele2.net/1MB.zip
دستور tr
دستور tr در یونیکس یک ابزار خط فرمان برای ترجمه یا حذف کاراکترها است. از طیف وسیعی از تبدیلها از جمله حروف بزرگ به کوچک، فشرده کردن کاراکترهای تکراری، حذف کاراکترهای خاص و یافتن و جایگزینی اولیه پشتیبانی میکند. می توان از آن با لوله های یونیکس برای پشتیبانی از ترجمه پیچیده تر استفاده کرد. tr مخفف ترجمه است.
سینتکس:
$ tr [flag] SET1 [SET2]
گزینهها:
- c- : مجموعه کاراکترها را در رشته تکمیل میکند. به عنوان مثال، عملیات برای کاراکترهایی که در مجموعه داده شده نیستند اعمال میشود.
- d- : کاراکترهای مجموعه اول را از خروجی حذف کنید.
- s- : کاراکترهای تکراری فهرست شده در set1 را با یک رخداد جایگزین می کند
- t- : مجموعه 1 را کوتاه می کند
نمونه دستورات
تبدیل حروف کوچک به بزرگ
برای تبدیل از حروف کوچک به حروف بزرگ می توان از مجموعههای از پیش تعریف شده در tr استفاده کرد.
دستور iptables
iptables یک رابط خط فرمان است که برای تنظیم و نگهداری جداول فایروال Netfilter برای IPv4، موجود در کرنل لینوکس استفاده میشود. فایروال بستهها را با قوانین تعریف شده در این جداول مطابقت میدهد و سپس اقدام مشخص شده را روی یک تطابق احتمالی انجام خواهد داد.
- Tables نام مجموعهای از chain است.
- chain مجموعهای از rules است.
- rule شرطی است که برای تطبیق بسته استفاده میشود.
- Target، اقدامی است که زمانی انجام میشود که یک Rule ممکن مطابقت داشته باشد. نمونههایی از تارگت عبارتند از ACCEPT، DROP، QUEUE.
- Policy اقدام پیشفرضی است که در صورت عدم تطابق با chainهای داخلی انجام میشود و میتواند ACCEPT یا DROP باشد.
سینتکس:
iptables --table TABLE -A/-C/-D... CHAIN rule --jump Target
دستور apt-get
apt-get یک ابزار خط فرمان است که به مدیریت بستهها در لینوکس کمک میکند. وظیفه اصلی آن بازیابی اطلاعات و بستهها از منابع معتبر برای نصب، ارتقا و حذف بستهها به همراه وابستگیهای آنها است. APT مخفف Advanced Packaging Tool است.
سینتکس:
apt-get [options] command
به روز رسانی: این دستور برای همگام سازی مجدد فایلهای فهرست بسته از منابع آنها استفاده میشود. قبل از ارتقا باید یک به روز رسانی انجام دهید.
apt-get update
دستور df و du
دستور df (disk free) میزان فضای موجود دیسک را که توسط فایل سیستمها استفاده میشود را گزارش میدهد. دستور du (disk usage) اندازه درختان دایرکتوری را شامل تمام محتویات آنها و اندازه فایلهای جداگانه گزارش میکند.
هدف این است که مطمئن شوید از آستانه 80 درصد تجاوز نمیکنید. اگر از آستانه فراتر رفتید، زمان آن فرا رسیده است که آشفتگی را کاهش دهید یا آن را پاکسازی کنید، زیرا با کمبود منابع، برخی رفتارهای بی ثبات رخ خواهد داد.
برای بررسی در فرمت قابل خواندن توسط انسان:
$ sudo df -h
اما در بیشتر موارد، شما میخواهید بررسی کنید که کدام قسمت از سیستم شما فضای دیسک زیادی را مصرف می کند. از دستور زیر استفاده کنید:
$ sudo du -h -d 1 /var/
دستور htop
دستور htop در سیستم لینوکس یک ابزار خط فرمان است که به کاربر اجازه میدهد تا به صورت تعاملی منابع حیاتی سیستم یا فرآیندهای سرور را در زمان واقعی مانیتور کند. این یک برنامه جدیدتر در مقایسه با دستور top است و پیشرفتهای زیادی را نسبت به دستور top ارائه میدهد. از عملکرد ماوس پشتیبانی میکند، از رنگ در خروجی خود استفاده می کند و نشانههای بصری در مورد استفاده از پردازنده، حافظه و تعویض میدهد. htop همچنین خطوط فرمان کامل را برای پردازشها چاپ میکند و به شما امکان میدهد به ترتیب برای پردازشها و خطوط فرمان به صورت عمودی و افقی حرکت کنید.
سینتکس
htop
- d –delay- : برای نشان دادن تاخیر بین بهروزرسانیها، در دهم ثانیه استفاده میشود.
- C –no-color –no-colour- : htop را در حالت تک رنگ شروع کنید.
- h –help- : برای نمایش پیام راهنما و خروج استفاده میشود.
- u –user=USERNAME- : فقط برای نمایش فرآیندهای یک کاربر معین استفاده میشود.
دستور ps
هر فرآیند در لینوکس یک شناسه منحصر به فرد دارد و با استفاده از دستور ps قابل مشاهده است.
$ sudo ps aux
a = نمایش فرآیندها برای همه کاربران
u = نمایش کاربر یا مالک فرآیند
x = همچنین فرآیندهایی را نشان می دهد که به ترمینال متصل نیستند
دستور kill
دستور kill در لینوکس (واقع در bin/kill/)، یک دستور داخلی است که برای پایان دادن به فرآیندها به صورت دستی استفاده میشود. این دستور سیگنالی را به فرآیندی ارسال میکند که فرآیند را خاتمه میدهد. اگر کاربر هیچ سیگنالی را که قرار است همراه با دستور kill ارسال شود مشخص نکند، سیگنال TERM پیش فرض ارسال میشود که فرآیند را خاتمه میدهد.
kill -l: برای نمایش تمام سیگنالهای موجود میتوانید از دستور زیر استفاده کنید:
$kill -l
- مقادیر PID منفی برای نشان دادن شناسه گروه فرآیند استفاده میشود. اگر شناسه گروه پردازش را ارسال کنید، تمام فرآیندهای درون آن گروه سیگنال را دریافت خواهند کرد.
- یک PID از 1- بسیار خاص است زیرا تمام فرآیندها را نشان می دهد به جز kill و init که فرآیند والد همه فرآیندهای روی سیستم است.
- برای نمایش لیستی از فرآیندهای در حال اجرا، از دستور ps استفاده کنید و این دستور، فرآیندهای در حال اجرا را با شماره PID به شما نشان میدهد. برای تعیین اینکه کدام فرآیند باید سیگنال kill را دریافت کند، باید PID را ارائه کنیم.
سینتکس:
$ps
kill pid: برای نشان دادن استفاده از PID با دستور kill.
سینتکس:
$kill pid
دستور telnet
Telnet کمک میکند تا
- به یک کامپیوتر لینوکس راه دور متصل شوید
- برنامهها را از راه دور اجرا کنید و مدیریت را انجام دهید
سینتکس
telnet hostname
مثال:
telnet localhost
شل اسکریپت
شل چیست؟
یک سیستم عامل شامل اجزای زیادی است، اما دو جزء اصلی آن kernel و shell هستند.
شما میتوانید یک کرنل را به عنوان هسته یک کامپیوتر در نظر بگیرید. ارتباط بین سخت افزار و نرم افزار را ممکن میسازد. کرنل داخلی ترین قسمت یک سیستم عامل است در حالی که شل (shell) بیرونی ترین قسمت است.
یک شِل در سیستم عامل لینوکس ورودی را به شکل دستورات از کاربر میگیرد، آن را پردازش میکند و سپس یک خروجی میدهد. این به عنوان یک رابط عمل میکند که از طریق آن کاربر روی برنامهها، دستورات و اسکریپتها کار میکند. یک ترمینال به شل دسترسی پیدا میکند و دستورات را نیز اجرا می کند.
هنگامی که ترمینال اجرا می شود، Shell یک خط فرمان (معمولا $) را صادر می کند که در آن امکان تایپ ورودی شما وجود دارد، پس از آن ترمینال با زدن کلید Enter آن را اجرا می کند. سپس ترمینال خروجی دستورات شما را نمایش می دهد.
شل به عنوان یک پوشش در اطراف داخلی ظریف یک سیستم عامل پیچیده میشود و از آن در برابر آسیبهای تصادفی محافظت میکند. از این رو نام آن شل (shell) است.
دو shell اصلی در لینوکس وجود دارد:
- shell Bourne: پرامپ این شل $ است و زیر مجموعههای آن به شرح زیر است:
- shell POSIX همچنین به عنوان sh
- Korn shell با نام sh
- Bourne Again SHell با نام bash (محبوبترین) نیز شناخته میشود.
- C shell: پرامپ این شل % است و زیر مجموعههای آن به شرح زیر است:
- C shell با نام csh نیز شناخته میشود
- Tops C shell با نام tcsh نیز شناخته میشود
Shell Scripting چیست؟
اسکریپت نویسی shell نوشتن یک سری دستورات برای شل است که میتواند اجرا شود. این میتواند توالی طولانی و تکراری دستورات را در یک اسکریپت واحد و ساده ترکیب کند. شما میتوانید این اسکریپت را ذخیره کرده و هر زمان که بخواهید آن را اجرا کنید. این به طور قابل توجهی تلاش مورد نیاز کاربر نهایی را کاهش میدهد.
در زیر مراحل ایجاد یک Shell Script آمده است:
- با استفاده از یک ویرایشگر متن مانند vi یا هر ویرایشگر دیگری یک فایل ایجاد کنید. فایل اسکریپت نام با پسوند .sh
- اسکریپت را با !# /bin/sh شروع میشود
- کدنویسی کنید
- فایل اسکریپت را به عنوان filename.sh ذخیره کنید
- برای اجرای اسکریپت bash filename.sh را تایپ کنید
!# یک عملگر به نام shebang است که اسکریپت را به مکان مفسر نشان میدهد. بنابراین، اگر از !# /bin/sh اسکریپت به bourne-shell اشاره میکند.
اکنون یک فایل با استفاده از ویرایشگری مانند vi ایجاد میکنیم و آن را با پسوند sh. ذخیره میکنیم. برنامه زیر را که مجموع ارقام یک عدد وارد شده توسط کاربر را اضافه و چاپ میکند کپی کنید. سپس با استفاده از دستور bash filename.sh این برنامه را اجرا کنید.
#!/bin/sh
echo "Enter a number"
read Num
g=$Num
# store the sum of
# digits
s=0
# use while loop to
# caclulate the sum
# of all digits
while [ $Num -gt 0 ]
do
# get Remainder
k=$(( $Num % 10 ))
# get next digit
Num=$(( $Num / 10 ))
# calculate sum of
# digit
s=$(( $s + $k ))
done
echo "sum of digits of $g is : $s"
دستورات Git
گیت چیست؟
Git یک سیستم کنترل نسخه توزیع شده رایگان و متنباز است. این ابزار همه چیز را از پروژههای کوچک گرفته تا بسیار بزرگ را با سرعت و کارایی انجام میدهد. Linus Torvalds آن را در سال 2005 برای توسعه کرنل لینوکس ایجاد کرد. Git دارای عملکرد، کارایی، امنیت و انعطاف پذیری است که اکثر تیمها و توسعه دهندگان فردی به آن نیاز دارند.
ابزارهایی مانند Git ارتباط بین توسعه و تیم عملیات را امکان پذیر میکند. هنگامی که در حال توسعه یک پروژه بزرگ با تعداد زیادی همکار هستید، برقراری ارتباط بین همکاران در حین ایجاد تغییرات در پروژه بسیار مهم است. پیامهای Commit در Git نقش بسیار مهمی در برقراری ارتباط بین تیم ایفا میکند. bits و pieces که همه ما به کار میبریم در سیستم کنترل نسخه مانند Git قرار دارند. برای موفقیت در DevOps، باید تمام ارتباطات را در Version Control داشته باشید. از این رو، Git نقش حیاتی در موفقیت در DevOps ایفا میکند.
دستورات git
git init
Usage: git init [repository name]
این دستور یک مخزن جدید ایجاد می کند.
git config
Usage: git config --global user.name “[name]”
Usage: git config --global user.email “[email address]”
این دستور به ترتیب نام نویسنده و آدرس ایمیل را تنظیم میکند. این اطلاعات مفید با commit ها است.
git clone
Usage: git clone [url]
این دستور به شما امکان میدهد یک کپی از یک مخزن را از یک URL موجود دریافت کنید.
git add
Usage: git add [file]
این دستور یک فایل را به staging area اضافه میکند.
Usage: git add *
این دستور یک یا چند را به staging area اضافه می کند.
git commit
Usage: git commit -m “[ Type in the commit message]”
این دستور فایل را به طور دائم در تاریخچه نسخه ثبت میکند یا اسنپ شات میگیرد.
Usage: git commit -a
این دستور فایلهایی را که با دستور git add اضافه کردهاید و همچنین فایلهایی را که از آن زمان تغییر دادهاید، commit میکند.
git status
Usage: git status
دستور git status وضعیت دایرکتوری کاری و staging area را نمایش میدهد. این دستور به شما امکان میدهد تغییراتی را که در staging هستند، تغییراتی که مرحله بندی نشدهاند و توسط Git ردیابی نمیشوند را مشاهده کنید.
git show
Usage: git show [commit]
این دستور تغییرات متادیتا و محتوای commit مشخص شده را نشان میدهد.
git rm
Usage: git rm [file]
این دستور فایل را از پوشه کاری شما حذف می کند و حذف را مرحله بندی میکند.
git remote
Usage: git remote add [variable name] [Remote Server Link]
این دستور مخزن لوکال شما را به سرور ریموت متصل میکند.
git push
Usage: git push [variable name] master
این دستور تغییرات commit شاخه اصلی را به مخزن ریموت شما ارسال میکند.
Usage: git push [variable name] [branch]
این دستور commit های شاخه را به مخزن ریموت شما میفرستد.
Usage: git push –all [variable name]
این دستور همه شاخهها را به مخزن ریموت شما پوش میکند.
Usage: git push [variable name] :[branch name]
این دستور یک شاخه را در مخزن ریموت شما حذف میکند.
git pull
Usage: git pull [Repository Link]
این دستور تغییرات روی سرور راه دور را در دایرکتوری کاری شما واکشی و ادغام میکند.
git branch
Usage: git branch
این دستور تمام شاخههای لوکال موجود در مخزن فعلی را فهرست میکند.
Usage: git branch [branch name]
این دستور یک شاخه جدید ایجاد میکند.
Usage: git branch -d [branch name]
این دستور شاخه ویژگی را حذف میکند.
git checkout
Usage: git checkout [branch name]
این دستور به شما امکان میدهد از یک شاخه به شاخه دیگر سوئیچ کنید.
Usage: git checkout -b [branch name]
این دستور یک شاخه جدید ایجاد میکند و همچنین به آن سوئیچ میکند.
git merge
Usage: git merge [branch name]
این دستور تاریخچه شاخه مشخص شده را در شاخه فعلی ادغام میکند.
git rebase
Usage: git rebase [branch name]
git rebase master - این دستور تمام کارهای ما را از شاخه فعلی به master منتقل میکند.
با این کار، به انتهای وبلاگ دستورات لینوکس برای DevOps رسیدیم. من سعی کرده ام تا حد امکان دستورات را در اینجا پوشش دهم. این وبلاگ قطعا به شما کمک می کند تا سفر خود را با DevOps شروع کنید.
نظرتون برامون مهمه شما اولین نظر رو بنویسید