آموزش LPIC1 – بخش اول

Hardware: هرچیز فیزیکی مانند رم، هارددیسک، مادربرد که در سرور/کامپیوتر قابل لمس باشد، سخت افزار نام دارد.

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

 

Hot plug: هرچیزی که بتوان بدون خاموش نمودن سرور/کامپیوتر به آن متصل نموده و از آن استفاده کرد. مانند انواع CD/DVD Drive، انواع هارد های External، مانیتور های خارجی، مودم های وایرلس، فلش USB و …

 

Cold Plug: هرچیزی که جهت اتصال آن به کامپیوتر نیاز باشد که سرور/کامپیوتر خاموش باشد و امکان اتصال آن در زمان روشن بودن نباشد. مانند رم، CPU، کارت گرافیک

 

HAL: مخفف Hardware Abstraction Layer است. در حالت کلی نام سخت افزارهای ما را از نام های بلند و بالا، مانند Dlink 4580 Master 32U به نام های جامع و یکتا مانند eth0 تبدیل میکند، بدین صورت که در تمام توزیع ها، اولین کارت شبکه ی متصل به سرور/کامپیوتر فارغ از شرکت سازنده و مدل آن با نام eth0 قابل دسترسی است و نیازی نیست از نام بلند و طولانی آن اطلاعاتی داشته باشیم. همچنین در صورتی که کانفیگی روی کارت شبکه انجام شده باشد و نیاز به تعویض آن باشد، HAL این کانفیگ را بدون اینکه نیاز به دخالت ما باشد جایگزین نموده و روی کارت شبکه جدید اعمال می نماید.

 

dbus: مانند یک اتوبوس است که نرم افزار ها می توانند جهت انجام درخواست هایشان با آن صحبت کنند، به طور مثال، فرض کنیم میخواهیم به هنگام دریافت اخطاری از یک برنامه ی خاص، صدایی از سرور خارج شود. در این صورت وقتی آن اخطار رخ دهد، برنامه به dbus اطلاع میدهد، پس از آن dbus به برنامه ی مدیریت صدا، میگوید که به دلیل دریافت اخطار، میبایست صدایی را پخش نماید. همچنین زمانی که سخت افزاری به سیستم متصل شد، مانند یک Mouse، این وظیفه ی dbus است که اتصال آن را اعلام نماید.

 

udev: توسط udev یکسری رویداد اجرا میگردد. به طور مثال به هنگام اتصال هارد دیسک ها، با توجه به زمان اتصال، هارد اول با نام sda هارد دوم با نام sdb و هارد سوم با نام sdd توسط HAL تغییر نام داده می شوند تا مستقل از نام شرکت سازنده و مدل گردند. حال اگر ما بخواهیم به هنگام اتصال یک هارد خاص، با نام دیگری در سرور قابل شناسایی باشد، مانند MyHDD، این کار می بایست توسط udev انجام گردد. همچنین udev این قابلیت را دارد که به هنگام اتصال این هارد به صورت اتوماتیک یکسری عملیات انتقال روی آن انجام دهد.

 

دایرکتوری sys: اطلاعات HAL در این دایرکتوری به صورت فایل نگه داری می شوند که به آن sysfs گفته می شود.

regux:~$ ls /sys
block  bus  class  dev    devices  firmware  fs  hypervisor  kernel  module  power

 

دایرکتوری proc: یک رابط بین کاربر با اجزای سیستم بوده و به صورت مجازی است. فایل های این دایرکتوری روی هارد ذخیره نمیگردند. تمامی برنامه هایی که در لینوکس اجرا میشوند در این دایرکتوری با نام یک عدد ذخیره میگردند.

$ ls /proc/
1      1249   1451   1565   18069  20346  2426  2765  2926  3175  3317  3537  39    468   4921  53    689   969          filesystems  misc           sysvipc            
10     13     146    157    18093  20681  2452  2766  2929  3183  3318  354   397   4694  4934  538   7     97           fs           modules        timer_list         
1039   1321   147    1572   18243  21     2456  28    2934  3187  34    3541  404   4695  4955  54    737   acpi         interrupts   mounts         timer_stats        
10899  13346  148    1576   18274  21021  2462  2841  2936  3191  3450  3550  41    47    4970  546   74    asound       iomem        mtrr           tty                
10960  13438  14817  158    1859   21139  25    2851  2945  32    3459  357   42    4720  4982  55    742   buddyinfo    ioports      net            uptime             
11     13619  149    16     18617  2129   2592  2852  2947  3202  3466  36    43    4731  4995  551   75    bus          irq          pagetypeinfo   version            
11120  13661  15     1613   18781  214    26    2862  2948  3206  3467  3683  44    4756  5     56    77    cgroups      kallsyms     partitions     version_signature  
11145  13671  150    1630   1880   215    27    2865  2952  3208  3469  3699  4484  4774  50    577   8     cmdline      kcore        sched_debug    vmallocinfo        
1159   13927  151    1633   1882   2199   2707  2866  2955  3212  3470  37    4495  4795  5008  5806  892   consoles     keys         schedstat      vmstat             
1163   14     1512   1634   19     22     2708  2884  2957  3225  3474  3710  45    48    5013  60    9     cpuinfo      key-users    scsi           zoneinfo           
1164   14045  1515   1693   19061  2219   2709  2887  2961  3236  3475  3752  4506  4811  5077  61    904   crypto       kmsg         self           
1170   14047  152    17     19068  23     2710  2891  3     324   3477  3761  4529  4821  5082  62    9061  devices      kpagecount   slabinfo       
1174   14052  153    17173  19069  23055  2711  2895  3047  3261  3517  3778  4558  484   5091  677   915   diskstats    kpageflags   softirqs       
12     1409   154    1732   19075  2354   2718  29    3093  3284  3522  38    4562  4861  51    678   923   dma          loadavg      stat           
1231   1444   155    17413  2      2390   2719  2904  31    3287  3525  3803  46    4891  52    679   939   driver       locks        swaps          
1234   1446   156    17751  20     24     2723  2908  3132  3298  3528  3823  4622  49    5202  680   940   execdomains  mdstat       sys            
1236   145    1563   18     2028   2418   2763  2911  3171  33    3533  3845  4661  4907  525   687   96    fb           meminfo      sysrq-trigger

همچنین میتوان در این دایرکتوری اطلاعات سخت افزار هایی نظیر CPU و Ram را مشاهده نمود، به طور مثال برای CPU

$ cat /proc/cpuinfo 
processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 42
model name    : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
stepping    : 7
microcode    : 0x15
cpu MHz        : 3195.312
cache size    : 3072 KB
physical id    : 0
siblings    : 4
core id        : 0
cpu cores    : 2
apicid        : 0
initial apicid    : 0
fpu        : yes
fpu_exception    : yes
cpuid level    : 13
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips    : 4983.79
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:

processor    : 1
vendor_id    : GenuineIntel
cpu family    : 6
model        : 42
model name    : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
stepping    : 7
microcode    : 0x15
cpu MHz        : 3010.839
cache size    : 3072 KB
physical id    : 0
siblings    : 4
core id        : 0
cpu cores    : 2
apicid        : 1
initial apicid    : 1
fpu        : yes
fpu_exception    : yes
cpuid level    : 13
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips    : 4983.79
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:

همچنین می توان در مسیر زیر در این دایرکتوری، به تنظیمات Kernel به صورت Live دسترسی یافت و حتی برخی از آنها را تغییر داد.

/proc/sys/fs

 

دایرکتوری dev: این دایرکتوری را udev کنترل می کند. به طور کلی هر Device متصل به کامپیوتر در این دایرکتوری قابل مشاهده است.

regux:/dev# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sda5  /dev/sda6

 

دستور lsusb: تمام Device های متصل به کامپیوتر که USB هستند را به همراه مشخصاتی نظیر شرکت سازنده چیپ آن سخا افزار نشان میدهد.

# lsusb
Bus 002 Device 003: ID 1c4f:0026 SiGma Micro Keyboard
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 005: ID 04f2:b217 Chicony Electronics Co., Ltd Lenovo Integrated Camera (0.3MP)
Bus 001 Device 004: ID 0a5c:217f Broadcom Corp. BCM2045B (BDC-2.1)
Bus 001 Device 003: ID 192f:0916 Avago Technologies, Pte. 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

دستور lspci: تمام Device های متصل به کامپیوتر که از طریق PCI متصل هستند را نشان میدهد.

# lspci
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (rev 04)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b4)
00:1c.1 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 2 (rev b4)
00:1c.4 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 (rev b4)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation QM67 Express Chipset Family LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 04)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)
03:00.0 Network controller: Intel Corporation Centrino Wireless-N 1000 [Condor Peak]
0d:00.0 System peripheral: Ricoh Co Ltd MMC/SD Host Controller (rev 07)

 

دستور lsmod: تمام ماژول هایی را نشان میدهد که Kernel آن ها رو Load نموده است. مانند بخش های مختلف یک کارت شبکه. برای حذف یک ماژول از دستور rmmod و برای نصب از دستور insmod استفاده میگردد. ولی با توجه به اینکه دستور insmod از dependency های یک ماژول پشتیبانی نمی نماید، از دستور modprobe استفاده می نماییم. همچنین در صورتی که بخواهیم ماژولی برای همیشه Load گردد، می توانیم برای سیستم عامل های قدیمی از etc/modules/ و برای سیستم های جدید از یک فایل کانفیگ مربوط به آن ماژول در etc/modprobe.d/ استفاده نمائیم.

root@funlife:/dev# lsmod
Module                  Size  Used by
pci_stub               12622  1 
vboxpci                23256  0 
vboxnetadp             25670  0 
vboxnetflt             27605  0 
vboxdrv               418013  3 vboxnetadp,vboxnetflt,vboxpci
ctr                    13049  3 
ccm                    17731  3 
dm_crypt               23172  1 
bnep                   19543  2 
rfcomm                 69509  8 
uvcvideo               81065  0 
arc4                   12608  2 
videobuf2_vmalloc      13216  1 uvcvideo
intel_rapl             18783  0 
iwldvm                236430  0 
x86_pkg_temp_thermal    14205  0 
intel_powerclamp       18786  0 
btusb                  32448  0 
videobuf2_memops       13362  1 videobuf2_vmalloc
videobuf2_core         59104  1 uvcvideo
v4l2_common            15682  1 videobuf2_core
mac80211              660592  1 iwldvm
coretemp               13441  0 
videodev              149725  3 uvcvideo,v4l2_common,videobuf2_core
media                  21963  2 uvcvideo,videodev
bluetooth             446190  22 bnep,btusb,rfcomm
kvm_intel             143592  0 
kvm                   459835  1 kvm_intel
snd_hda_codec_hdmi     47547  1 
crct10dif_pclmul       14307  0 
6lowpan_iphc           18702  1 bluetooth
crc32_pclmul           13133  0 
snd_hda_codec_conexant    23064  1 
ghash_clmulni_intel    13230  0 
snd_hda_codec_generic    68914  1 snd_hda_codec_conexant
aesni_intel           152552  10 
snd_seq_midi           13564  0 
snd_seq_midi_event     14899  1 snd_seq_midi
aes_x86_64             17131  1 aesni_intel
mei_me                 19742  0 
lrw                    13287  1 aesni_intel
iwlwifi               183038  1 iwldvm

 

UUIDs: برای شناسایی Device ها یک UUID وجود دارد که منحصر به فرد است. برای مشاهده ی UUID ها می توان از دستور blkid استفاده نمود. لازم به ذکر است قوانین udev با استفاده از UUID تمامی Device ها را شناسایی مینماید و اعمال لازم را روی آنها انجام میدهد.

root@regux:~# blkid
/dev/sda1: UUID="c5858f42-49b7-429b-b9c9-bb394e8d932d" TYPE="ext4" PARTUUID="c7edf43e-01"
/dev/sda5: UUID="e24ce14e-27e4-4c78-ac12-750a67a668ce" TYPE="swap" PARTUUID="c7edf43e-05"

 

Kernel
هسته ی سیستم عامل لینوکس Kernel است. کرنل منابع یک کامپیوتر را کنترل کرده و آنها را به کاربران و وظایف مختلف اختصاص میدهد. کرنل به صورت مستقیم با سخت افزار ارتباط برقرار می کند.

 

Shell
لینوکس یک رابط کاربری ساده به نام Shell دارد که سرویس هایی که یک کاربر نیاز دارد را فراخوانی میکند. شل ها کاربران را از داشتن معلومات در مورد جزئیات پیچیده ی سخت افزار بی نیاز میکنند. برخی از شل های لینوکس عبارتند از: csh, tcsh,sh,bash,ksh

شل ها همانند هر برنامه ی دیگری در سیستم لینوکس اجرا میشوند. لازم به ذکر است Bash رایج ترین شل موجود در لینوکس می باشد و ما هم قصد داریم برای آموزش از این شل استفاده کنیم. Bash برگرفته از Bourne Again Shell بوده و صورت پیشرفته ی Bourne Shell و همچنین شل پیش فرض اکثر توزیع های لینوکس است. این شل را در مسیر bin/bash/ می توان یافت.

یکی از مزایای این شل این است که قابلیت Storing the History را داراست و کاربر می تواند به راحتی و با کلیک روی Arrow Key ها به دستورات قبلی دسترسی یافته و آن ها را مشاهده و یا ویرایش نماید.

 

مراحل بوت در لینوکس

BIOS: اولین نرم افزاری که در PC اجرا میگردد، ابتدا یک POST یا Power on Self test انجام میدهد که رم و … را تست می نماید و بعد از آن با توجه به تنظیمات BIOS در بخش Advances BIOS Features یا Boot Sequence مقدار First Boot Device را خوانده و در Device انتخاب شده در این بخش، سیستم را به bootloader تحویل میدهد.

 

bootloader: نرم افزاری است که سیستم عامل را Load میکند. از انواع bootloader ها می توان به GRUB نسخه 1 و 2 و LILO اشاره نمود. bootloader لیست سیستم عامل های موجود را نشان میدهد و گزینه های مختلفی را با توجه به آن ارائه میدهد، مانند Memory Test و Rescue و Load سیستم عامل. برای مشاهده ی جزئیات بیشتر در ارتباط با گزینه های GRUB میتوانیم بر روی گزینه مورد نظر کلید e را زده و کانفیگ را مشاهده یا تغییر دهیم.

تنظیمات bootloader ها در فایل های زیر موجودند.

/etc/lilo.conf
/boot/grub/grub.cfg
/boot/grub/menu.lst

سپس GRUB کنترل را دست kernel میدهد.

 

kernel: کرنل بر اساس پارامتر های داده شده در بخش قبل، اولین رابط بین سخت افزار و نرم افزار شده و پس از آن نیاز است تا رابط های گرافیکی، رابط های ارتباطی و … بارگذاری شوند. لذا جهت انجام این موارد init بارگذاری میشود.

 

init: تمامی پروسه های قبلی و همچنین اعمالی مانند باز نمودن ترمینال یا برنامه های دلخواه توسط init انجام می گردند. در اصل init مادر تمام Process های دیگر است. لازم به ذکر است id آن 1 بوده و تا زمان روشن بودن سیستم برقرار است.

نکته: init در حال جایگزین شدن با upstart و موارد دیگر است، ولی هنوز بسیاری از سیستم های مهم از init استفاده مینمایند.

 

دستور dmesg: به دلیل اینکه در پروسه boot چیزی به جز kernel وجود ندارد، لذا وظیفه log نمودن عملیات boot بر عهده Kernel و روی چیزی به نام kernel ring buffer است. با این دستور میتوانیم این موارد را تا این لحظه مشاهده کنیم. همچنین log ها تا زمان boot نیز در فایل زیر قابل مشاهده اند.

cat /var/log/dmesg

همچنین فایل /var/log/messages یا در سیستم های جدید /var/log/syslog لاگ تمامی موارد بعد از Load شدن init را ثبت مینماید و در صورت دریافت خطا یا به طور مثال وصل نشدن هارد دیست به سرور، لاگ خطا در آن قابل مشاهده است.

 

runlevels ها: runlevel ها در لینوکس وضعیت های متفاوتی هستند که سیستم عامل میتواند وارد آن ها شود.

  • 0- Halt
  • 1- Single user mode (recovery)
  • 2- Debian/Ubuntu default
  • 3- RHEL/Fedora/SUSE text mode
  • 4- free
  • 5- RHEL/Fedora/SUSE graphical mode
  • 6- reboot

با دستور runlevel می توانیم runlevel فعلی را مشاهده کرده و با telinit آن را تغییر دهیم.

# runlevel
N 3
# telinit 5 
# runlevel
3 5

فایل inittab: این فایل در سیستم های قدیمی مراحل کار مربوط به init را کنترل میکرد و در مسیر etc/inittab/ قرار داشت. در حال حاضر به دلیل جایگزین شدن این روش با upstart و systemd دیگر از این فایل استفاده نمیگردد. به صورت پیش فرض runlevel در این فایل در بخش id:5:initdefault: تعریف شده است.

محتوای این فایل:

#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon

فرمت یکی از دستورها به شکل زیر است:

id:runlevels:action:process

بخش id یک مورد منحصر به فرد است و میتواند تا 2 الی 3 کاراکتر باشد، runlevel میگوید در چه runlevel ای باید کار کند و action میگوید چه کاری باید انجام دهد. همچنین process نشان دهنده ی process ای است که میبایست Run گردد. مانند دستور x:5:respawn:/etc/X11/prefdm -nodaemon که میگوید همیشه این برنامه باید بالا باشد.

در ارتباط با action ها مقدار respawn یعنی هر وقت از حالت اجرا خارج شد دوباره اجرایش کن، wait یعنی process را اجرا کن و تا کار آن به اتمام نرسیده است کار دیگری انجام نده و منتظر اتمام آن باش. once یعنی فقط یک بار اجرا کن. initdefault یعنی حالت پیش فرض runlevel بوده و ctrlaltdel به معنی این است که ctrl + alt + del را میزنیم. به طور مثال در مورد آخر، دستور ca::ctrlaltdel:/sbin/shutdown -t3 -r now باعث ریست شدن سرور میگردد.

 

لازم به ذکر است کلیه سرویس هایی که در سیستم اجرا میگردند در فایل etc/init.d/ موجود هستند. مثلا دستورات زیر باعث Start, Stop و نمایش وضعیت سرویس httpd میگردد.

/etc/init.d/httpd start
/etc/init.d/httpd stop
/etc/init.d/httpd status

همچنین از طریق rc های مختلف، مانند rc5.d میتوان اعمال خاصی را برای ورود به runlevel5 روی مجموعه ای از سرویس ها انجام داد.

حرف K ابتدای فایل ها نشان دهنده ی kill و حرف S نشان دهنده ی Start است. به طور مثال برای rc6.d داریم:

root@kali:/etc/rc6.d# ls -ltrh
total 0
lrwxrwxrwx 1 root root 15 Jul 15 15:41 K01uuidd -> ../init.d/uuidd
lrwxrwxrwx 1 root root 29 Jul 15 15:41 K01unattended-upgrades -> ../init.d/unattended-upgrades
lrwxrwxrwx 1 root root 14 Jul 15 15:41 K01thin -> ../init.d/thin
lrwxrwxrwx 1 root root 18 Jul 15 15:41 K01stunnel4 -> ../init.d/stunnel4
lrwxrwxrwx 1 root root 14 Jul 15 15:41 K01sslh -> ../init.d/sslh
lrwxrwxrwx 1 root root 27 Jul 15 15:41 K01speech-dispatcher -> ../init.d/speech-dispatcher
lrwxrwxrwx 1 root root 15 Jul 15 15:41 K01snmpd -> ../init.d/snmpd
lrwxrwxrwx 1 root root 14 Jul 15 15:41 K01smbd -> ../init.d/smbd
lrwxrwxrwx 1 root root 15 Jul 15 15:41 K01saned -> ../init.d/saned
lrwxrwxrwx 1 root root 21 Jul 15 15:41 K01samba-ad-dc -> ../init.d/samba-ad-dc
lrwxrwxrwx 1 root root 15 Jul 15 15:41 K01rwhod -> ../init.d/rwhod
lrwxrwxrwx 1 root root 17 Jul 15 15:41 K01rsyslog -> ../init.d/rsyslog
lrwxrwxrwx 1 root root 18 Jul 15 15:41 K01redsocks -> ../init.d/redsocks
lrwxrwxrwx 1 root root 20 Jul 15 15:41 K01postgresql -> ../init.d/postgresql
lrwxrwxrwx 1 root root 15 Jul 15 15:41 K01pcscd -> ../init.d/pcscd
lrwxrwxrwx 1 root root 17 Jul 15 15:41 K01openvpn -> ../init.d/openvpn
lrwxrwxrwx 1 root root 23 Jul 15 15:41 K01openbsd-inetd -> ../init.d/openbsd-inetd
lrwxrwxrwx 1 root root 14 Jul 15 15:41 K01nmbd -> ../init.d/nmbd
lrwxrwxrwx 1 root root 25 Jul 15 15:41 K01network-manager -> ../init.d/network-manager
lrwxrwxrwx 1 root root 20 Jul 15 15:41 K01networking -> ../init.d/networking
lrwxrwxrwx 1 root root 15 Jul 15 15:41 K01mysql -> ../init.d/mysql
lrwxrwxrwx 1 root root 16 Jul 15 15:41 K01miredo -> ../init.d/miredo
lrwxrwxrwx 1 root root 23 Jul 15 15:41 K01lvm2-lvmpolld -> ../init.d/lvm2-lvmpolld
lrwxrwxrwx 1 root root 22 Jul 15 15:41 K01lvm2-lvmetad -> ../init.d/lvm2-lvmetad
lrwxrwxrwx 1 root root 20 Jul 15 15:41 K01live-tools -> ../init.d/live-tools
lrwxrwxrwx 1 root root 20 Jul 15 15:41 K01irqbalance -> ../init.d/irqbalance
lrwxrwxrwx 1 root root 17 Jul 15 15:41 K01iodined -> ../init.d/iodined
lrwxrwxrwx 1 root root 20 Jul 15 15:41 K01hwclock.sh -> ../init.d/hwclock.sh
lrwxrwxrwx 1 root root 14 Jul 15 15:41 K01gdm3 -> ../init.d/gdm3
lrwxrwxrwx 1 root root 15 Jul 15 15:41 K01exim4 -> ../init.d/exim4
lrwxrwxrwx 1 root root 17 Jul 15 15:41 K01dns2tcp -> ../init.d/dns2tcp
lrwxrwxrwx 1 root root 18 Jul 15 15:41 K01darkstat -> ../init.d/darkstat
lrwxrwxrwx 1 root root 26 Jul 15 15:41 K01cryptdisks-early -> ../init.d/cryptdisks-early
lrwxrwxrwx 1 root root 20 Jul 15 15:41 K01cryptdisks -> ../init.d/cryptdisks
lrwxrwxrwx 1 root root 17 Jul 15 15:41 K01couchdb -> ../init.d/couchdb
lrwxrwxrwx 1 root root 19 Jul 15 15:41 K01bluetooth -> ../init.d/bluetooth
lrwxrwxrwx 1 root root 18 Jul 15 15:41 K01beef-xss -> ../init.d/beef-xss
lrwxrwxrwx 1 root root 22 Jul 15 15:41 K01avahi-daemon -> ../init.d/avahi-daemon
lrwxrwxrwx 1 root root 16 Jul 15 15:41 K01atftpd -> ../init.d/atftpd
lrwxrwxrwx 1 root root 18 Jul 15 15:41 K01arpwatch -> ../init.d/arpwatch
lrwxrwxrwx 1 root root 29 Jul 15 15:41 K01apache-htcacheclean -> ../init.d/apache-htcacheclean
lrwxrwxrwx 1 root root 17 Jul 15 15:41 K01apache2 -> ../init.d/apache2

 

دستور Shutdown: این دستور ابتدا یک warning برای تمام User ها ارسال میکند و میگوید مثلا در 10 دقیقه ی دیگر سیستم خاموش می گردد. در این صورت سایر کاربران می توانند فعالیت های جاری را Save کنند. سپس سیستم یک پیغام terminate برای برنامه های باز میفرستند و به آنها فرصت میدهد خودشان را Kill کنند، 5 ثانیه بعد کل برنامه ها را Kill می نماید و به runlevel 1 میرود. با فلگ t- میتوان این زمان را تغییر داد، مثلا t60- زمان 5 ثانیه پیش فرض را 60 ثانیه می نماید. با فلگ h- میتوان سیستم را halt و با r- میتوان سیستم را ریبوت کرد. همچنین زمان با فرمت hh:mm یا n (دقیقه) یا now قابل استفاده می باشد. لازم به ذکر است با فشردن کلید های ctrl + c و یا دستور shutdown -c می توان دستور را کنسل نمود.

نکته: با دستور wall نیز می توان به سایر کاربران پیام ارسال نمود.

 

دستور halt: سیستم را خاموش میکند.

دستور poweroff: اول سیستم را halt میکند بعد مادربرد را خاموش میکند.

دستور reboot: با استفاده از halt سیستم را راه اندازی مجدد می نماید.

 

upstart: اوبونتو از upstart استفاده می نماید. لازم به ذکر است در upstart امکانات بیشتری نسبت به init  داریم. میتوانیم رویداد تعریف کنیم و برای مثال اگر قصد داریم httpd را Start کنیم قبلش باید حتما سرویس های named و exim در حالت Start باشند و اگر نبودند به صورت خودکار این مورد انجام می گردد. دستور initctl list لیستی از سرویس ها و وضعیت آنها نشان میدهد و همچنین با دستور service میتوان با سرویس ها کار کرد. مثلا service httpd start سرویس httpd را Start می کند.

همچنین فایل اصلی تنظیمات در etc/init/ است.

 

systemd: بیشتر در Fedora و SUSE استفاده میگردد و سوکت ها را قبول میکند و هر سرویس با یک سوکت بالا می آید. به طور مثال در سرویس httpd لازم نیست سرویس Start گردد و فقط کافیست که بداند httpd روی پورت 80 در حالت Listen است. هر زمان که Packet ای به پورت 80 ارسال شود، آن وقت سرویس httpd را Start میکند. در نتیجه سیستم سریع تر بوت می گردد. مانند upstart نیازمندی های سرویس ها قابل تعریف شدن است و سریع تر از init است. دستور اصلی آن systemctl است. همچنین هر جزء مانند یک سرویس یا یک Socket یا یک Device یک Unit است و systemd کلا با Unit ها کار میکند.

همچنین فایل اصلی تنظیمات در etc/systemd/system است.

 

نویسنده: میلاد خوشدل

منابع:

-جادی
-sybex
-کتاب راهنمای جامع مدرک بین المللی Lpic1

 


پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

9 − 4 =