Product SiteDocumentation Site

پيوست B. درس کاربردی کوتاه

با اینکه مخاطب عمده این کتاب مدیران سیستم و “کاربران حرفه‌ای” هستند، اما قصد نداریم که کاربران تازه‌کار را از این فهرست خارج سازیم. این ضمیمه شامل درس‌های مقدماتی است که برای مدیریت یک رایانه تحت یونیکس باید بدانید.

B.1. خط فرمان و دستورات ابتدایی

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

B.1.1. مرور ساختار درختی و مدیریت فایل‌ها

زمانی که ترمینال باز می‌شود، دستور pwd (که مخفف print working directory است) مسیر جاری در فایل سیستم را نمایش می‌دهد. این مسیر توسط cd قابل تغییر است (که مخفف change directory است). دایرکتوری پدر همیشه با علامت .. (دو نقطه) فراخوانده می‌شود، در صورتی که مسیر جاری با علامت . (یک نقطه) شناخته می‌شود. دستور ls جهت نمایش محتویات داخل یک دایرکتوری استفاده می‌شود. اگر پارامتری داده نشود، بر روی دایرکتوری جاری عمل می‌کند.
$ pwd
/home/rhertzog
$ cd Desktop
$ pwd
/home/rhertzog/Desktop
$ cd .
$ pwd
/home/rhertzog/Desktop
$ cd ..
$ pwd
/home/rhertzog
$ ls
Desktop    Downloads  Pictures  Templates
Documents  Music      Public    Videos
یک دایرکتوری جدید می‌تواند توسط mkdir directory ایجاد شود و یک دایرکتوری موجود (خالی) می‌تواند با دستور rmdir directory حذف شود. دستور mv امکان جابجایی یا نامگذاری مجدد فایل‌ها و دایرکتوری‌ها را به عهده دارد؛ حذف یک فایل توسط دستور rm انجام می‌شود.
$ mkdir test
$ ls
Desktop    Downloads  Pictures  Templates  Videos
Documents  Music      Public    test
$ mv test new
$ ls
Desktop    Downloads  new       Public     Videos
Documents  Music      Pictures  Templates
$ rmdir new
$ ls
Desktop    Downloads  Pictures  Templates  Videos
Documents  Music      Public

B.1.2. نمایش و تغییر فایل‌های متنی

دستور cat file (که با هدف الحاق فایل‌ها به خروجی استاندارد ایجاد شده) یک فایل را خوانده و محتویاتش را روی ترمینال نمایش می‌دهد. اگر فایل بیش از اندازه بزرگ باشد تا محتویاتش روی یک صفحه قابل نمایش باشند، از یک ابزار صفحه‌بندی مانند less (یا more) استفاده کنید تا محتویات فایل به صورت صفحه‌بندی شده نمایش داده شوند.
دستور editor یک ویرایشگر متن را اجرا می‌کند (مانند vi یا nano) که امکان ایجاد، تغییر و خواندن فایل‌های متنی را می‌دهد. ساده‌ترین فایل‌ها بعضی اوقات می‌توانند با دستوری مانند echo "text" >file ایجاد شوند: این دستور منجر به ایجاد فایلی به نام file با محتویات “text” می‌شود. اضافه‌کردن یک خط به انتهای این فایل نیز قابل انجام است، با دستوری مانند echo "moretext" >>file . به کاربرد >> در این نمونه توجه کنید.

B.1.3. جستجو به دنبال فایل‌ها و محتویات آن‌ها

دستور find directory criteria به دنبال فایل‌هایی در سلسه‌مراتب directory بر اساس شرایط گفته شده می‌گردد. پرکاربردترین شرایط مورد استفاده در آن عبارتند از -name name: که امکان جستجوی فایلی بر اساس نام آن را می‌دهد.
دستور grep expression files به جستجوی محتویات داخل یک فایل پرداخته و خط‌هایی را که با عبارت باقاعده (regex) همخوانی دارند استخراج می‌کند (به قسمت کنار صفحه‌ای بازگشت به مقدمات عبارت منظم مراجعه کنید). اضافه‌کردن گزینه -r امکان جستجو به صورت بازگشتی درون فایل‌های یک دایرکتوری را می‌دهد که نام آن در انتهای دستور ذکر می‌شود. این امکان به جستجوی فایل‌هایی کمک می‌کند که تنها برخی از محتویات آن‌ها قابل دسترسی هستند.

B.1.4. مدیریت فرآیندها (پروسه‌ها)

دستور ps aux فهرستی از فرآیندهای جاری در سیستم را نمایش می‌دهد و با نمایش pid (شناسه فرآیند) به شناسایی هر چه بهتر آن‌ها یاری می‌رساند. زمانی که pid یک فرآیند شناخته شود، دستور kill -signal pid امکان ارسال یک سیگنال را به آن می‌دهد (اگر فرآیند به کاربر جاری تعلق داشته باشد). سیگنال‌های متفاوتی وجود دارند؛ پرکاربردترین آن‌ها عبارتند از TERM (درخواست نابودسازی مودبانه) و KILL (نابودسازی خشن).
مفسر دستور همچنین می‌تواند برنامه‌ها را در پس‌زمینه اجرا کند در صورتی که عبارت “&” بعد از دستور قرار بگیرد. با استفاده از امپرسند، کاربر کنترل مجدد خط فرمان را بر عهده می‌گیرد با اینکه دستور در پس‌زمینه در حال اجرا است (از دید کاربر مخفی است؛ به عنوان یک فرآیند پس‌زمینه). دستور jobs فهرستی از فرآیندهای موجود در پس‌زمینه را ارائه می‌دهد؛ اجرای دستور fg %job-number (برای پیش‌زمینه) یک کار را به پیش‌زمینه منتقل می‌کند. وقتی دستوری در پیش‌زمینه اجرا می‌شود (خواه به صورت معمولی اجرا شده باشد، خواه با فراخوانی دستور fg) ترکیب کلید‌های Control+Z فرآیند را به حالت توقف درآورده و کنترل خط فرمان را به کاربر انتقال می‌دهد. این فرآیند می‌تواند با اجرای دستور bg %job-number (برای پس‌زمینه) به ادامه فعالیت خود بپردازد.

B.1.5. اطلاعات سیستم: حافظه، فضای ذخیره‌سازی، هویت

دستور free اطلاعات مربوط به حافظه را نمایش می‌دهد؛ دستور df (که مخفف disk free است) گزارش میزان فضای باقیمانده روی دیسک در تمام دیسک‌های نصب شده روی فایل سیستم را می‌دهد. گزینه -h آن (که مخفف human readble است) اندازه‌ها را به واحد خواناتری تبدیل می‌کند (معمولا مگابایت یا گیگابایت). به روشی مشابه، دستور free از گزینه‌های -m و -g بهره‌ می‌برد و داده‌ها را به صورت مگابایت یا گیگابایت نمایش می‌دهد.
$ free
              total        used        free      shared  buff/cache   available
Mem:       16279260     5910248      523432      871036     9845580     9128964
Swap:      16601084      240640    16360444
$ df
Filesystem                1K-blocks      Used Available Use% Mounted on
udev                        8108516         0   8108516   0% /dev
tmpfs                       1627928    161800   1466128  10% /run
/dev/mapper/vg_main-root  466644576 451332520  12919912  98% /
tmpfs                       8139628    146796   7992832   2% /dev/shm
tmpfs                          5120         4      5116   1% /run/lock
tmpfs                       8139628         0   8139628   0% /sys/fs/cgroup
/dev/sda1                    523248      1676    521572   1% /boot/efi
tmpfs                       1627924        88   1627836   1% /run/user/1000
دستور id هویت کاربری که ترمینال را اجرا کرده است، نمایش می‌دهد، به همراه فهرست گروه‌هایی که کاربر به آن‌ها تعلق دارد. از آنجایی که دسترسی به برخی فایل‌ها یا دستگاه‌ها ممکن است برای اعضای گروه محدود شود، بررسی عضویت در گروه‌های موجود ممکن است مفید واقع شود.
$ id
uid=1000(rhertzog) gid=1000(rhertzog) groups=1000(rhertzog),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(netdev),109(bluetooth),115(scanner)