LFCS: Ġestjoni tal-Proċess u s-Servizzi tal-Istartjar tas-Sistema (SysVinit, Systemd u Upstart) - Parti 7


Ftit xhur ilu, il-Linux Foundation ħabbret iċ-ċertifikazzjoni LFCS (Linux Foundation Certified Sysadmin), programm ġdid eċċitanti li l-għan tiegħu huwa li jippermetti individwi minn kull naħa tad-dinja biex jiksbu ċċertifikati fit-twettiq ta’ kompiti bażiċi sa intermedji ta’ amministrazzjoni tas-sistema fuq sistemi Linux. Dan jinkludi l-appoġġ ta' sistemi u servizzi li diġà qed jaħdmu, flimkien ma' sejba u analiżi tal-problemi mill-ewwel, flimkien mal-abbiltà li tiddeċiedi meta tqajjem kwistjonijiet lit-timijiet tal-inġinerija.

Il-video li ġej jiddeskrivi introduzzjoni qasira għall-Programm ta 'Ċertifikazzjoni tal-Fondazzjoni Linux.

Din il-kariga hija Parti 7 ta 'serje ta' 10 tutorjali, hawnhekk f'din il-parti, se nispjegaw kif Immaniġġja l-Proċess u s-Servizzi tal-Istartjar tas-Sistema Linux, li huma meħtieġa għall-eżami ta 'ċertifikazzjoni LFCS.

Ġestjoni tal-Proċess tal-Istartjar tal-Linux

Il-proċess tal-ibbutjar ta 'sistema Linux jikkonsisti f'diversi fażijiet, kull waħda rappreżentata minn komponent differenti. Id-dijagramma li ġejja tiġbor fil-qosor il-proċess tal-but u turi l-komponenti ewlenin kollha involuti.

Meta tagħfas il-buttuna Power fuq il-magna tiegħek, il-firmware li huwa maħżun f'ċippa EEPROM fil-motherboard jinizjalizza l-POST ( Power-On Self Test) biex jiċċekkja l-istat tar-riżorsi tal-ħardwer tas-sistema. Meta l-POST ikun lest, il-firmware imbagħad ifittex u jgħabbi l-1st stage boot loader, li jinsab fl-MBR jew fl-EFI partizzjoni ta 'l-ewwel disk disponibbli, u tagħti kontroll għaliha.

L-MBR jinsab fl-ewwel settur tad-disk immarkat bħala bootable fis-settings tal-BIOS u huwa ta’ daqs 512 bytes.

  1. L-ewwel 446 bytes: Il-bootloader fih kemm kodiċi eżekutibbli kif ukoll test ta' messaġġ ta' żball.
  2. 64 bytes li jmiss: It-tabella tal-Partition fiha rekord għal kull waħda minn erba' partizzjonijiet (primarji jew estiżi). Fost affarijiet oħra, kull rekord jindika l-istatus (attiv/mhux attiv), id-daqs, u s-setturi tal-bidu/tat-tmiem ta 'kull partizzjoni.
  3. L-aħħar 2 bytes: In-numru maġiku jservi bħala kontroll tal-validazzjoni tal-MBR.

Il-kmand li ġej iwettaq backup tal-MBR (f'dan l-eżempju, /dev/sda huwa l-ewwel hard disk). Il-fajl li jirriżulta, mbr.bkp jista 'jiġi utli jekk it-tabella tal-partizzjoni ssir korrotta, pereżempju, biex is-sistema ma tkunx tista' tinbeda.

Naturalment, sabiex nużawh aktar tard jekk ikun hemm bżonn, ikollna bżonn nissejvjah u naħżnu x'imkien ieħor (bħal USB drive, pereżempju). Dak il-fajl se jgħinna nirrestawraw l-MBR u se jerġgħu nerġgħu sejrin jekk u biss jekk ma nbiddlux it-tqassim tal-hard drive sadattant.

# dd if=/dev/sda of=mbr.bkp bs=512 count=1
# dd if=mbr.bkp of=/dev/sda bs=512 count=1

Għal sistemi li jużaw il-metodu EFI/UEFI, il-firmware UEFI jaqra s-settings tiegħu biex jiddetermina liema applikazzjoni UEFI għandha titnieda u minn fejn (jiġifieri, f'liema disk u partizzjoni l- Il-partizzjoni EFI tinsab).

Sussegwentement, it-2nd stage boot loader (magħruf ukoll bħala boot manager) jitgħabba u jitħaddem. GRUB [GRand Unified Boot] huwa l-aktar boot manager użat ta' spiss fil-Linux. Waħda minn żewġ verżjonijiet distinti tista 'tinstab fuq il-biċċa l-kbira tas-sistemi użati llum.

  1. Fajl tal-konfigurazzjoni tal-wirt GRUB: /boot/grub/menu.lst (distribuzzjonijiet anzjani, mhux appoġġjati minn firmwares EFI/UEFI).
  2. Fajl ta' konfigurazzjoni GRUB2: x'aktarx, /etc/default/grub.

Għalkemm l-għanijiet tal-eżami LFCS ma jitolbux b'mod espliċitu għarfien dwar l-intern ta' GRUB, jekk int kuraġġuż u taffordja li tħawwad is-sistema tiegħek (tista' tkun trid tipprovaha l-ewwel fuq magna virtwali, fil-każ), trid tmexxi.

# update-grub

Bħala root wara li timmodifika l-konfigurazzjoni tal-GRUB sabiex tapplika l-bidliet.

Bażikament, GRUB jgħabbi l-kernel default u l-immaġini initrd jew initramfs. Fi ftit kliem, initrd jew initramfs jgħinu biex iwettqu l-iskoperta tal-ħardwer, it-tagħbija tal-modulu tal-kernel u l-iskoperta tal-apparat meħtieġ biex tinkiseb is-sistema tal-fajls tal-għeruq reali immuntata.

Ladarba s-sistema tal-fajls tal-għeruq reali tkun up, il-kernel jesegwixxi s-sistema u l-maniġer tas-servizz (init jew systemd, li l-identifikazzjoni tal-proċess tagħhom jew PID huwa dejjem 1) biex jibda l-utent normali- proċess tal-ibbutjar tal-ispazju sabiex tippreżenta user interface.

Kemm init kif ukoll systemd huma daemons (proċessi ta' sfond) li jimmaniġġjaw daemons oħra, bħala l-ewwel servizz li jibda (matul il-boot) u l-aħħar servizz li jintemm (waqt l-għeluq).

Servizzi tal-Bidu (SysVinit)

Il-kunċett ta' runlevels fil-Linux jispeċifika modi differenti kif tuża sistema billi tikkontrolla liema servizzi qed jaħdmu. Fi kliem ieħor, runlevel jikkontrolla liema kompiti jistgħu jitwettqu fl-istat ta 'eżekuzzjoni attwali = runlevel (u liema ma jistgħux).

Tradizzjonalment, dan il-proċess tal-istartjar kien isir ibbażat fuq konvenzjonijiet li oriġinaw minn System V UNIX, bis-sistema tgħaddi teżegwixxi kollezzjonijiet ta’ skripts li jibdew u jwaqqfu s-servizzi hekk kif il-magna daħlet f’livell ta’ ħidma speċifiku (li, fi kliem ieħor , huwa mod differenti tat-tħaddim tas-sistema).

F'kull runlevel, is-servizzi individwali jistgħu jiġu ssettjati biex jaħdmu, jew biex jiġu mitfija jekk jaħdmu. L-aħħar verżjonijiet ta' xi distribuzzjonijiet ewlenin qed jitbiegħdu mill-istandard System V favur servizz pjuttost ġdid u maniġer tas-sistema msejjaħ systemd (li tfisser system daemon), iżda ġeneralment appoġġ sysv kmandi għal skopijiet ta' kompatibilità. Dan ifisser li inti tista 'tħaddem il-biċċa l-kbira ta' l-għodod magħrufa sew ta 'sysv init f'distribuzzjoni bbażata fuq systemd.

Aqra wkoll: Għaliex 'systemd' jissostitwixxi 'init' fil-Linux

Minbarra li jibda l-proċess tas-sistema, init iħares lejn il-fajl /etc/inittab biex jiddeċiedi liema runlevel għandu jiddaħħal.

Biex taqleb bejn runlevels, nistgħu sempliċiment noħorġu bidla fir-runlevel bl-użu tal-kmand init: init N (fejn N huwa wieħed mill-runlevels elenkati hawn fuq). Jekk jogħġbok innota li dan mhuwiex il-mod rakkomandat li sistema taħdem għal runlevel differenti minħabba li ma tagħti l-ebda twissija lill-utenti eżistenti li illoggjaw (b'hekk iġġiegħelhom jitilfu x-xogħol u l-proċessi jtemmu b'mod anormali).

Minflok, il-kmand ta' shutdown għandu jintuża biex terġa' tibda s-sistema (li l-ewwel tibgħat messaġġ ta' twissija lill-utenti kollha li illoggjaw u jimblokka kwalunkwe logins ulterjuri; imbagħad jindika init biex jaqilbu l-livelli ta' tmexxija); madankollu, ir-runlevel default (dak li s-sistema se tibbutja) għandu jiġi editjat l-ewwel fil-fajl /etc/inittab.

Għal dik ir-raġuni, segwi dawn il-passi biex taqleb sew bejn runlevels, Bħala root, fittex il-linja li ġejja f'/etc/inittab.

id:2:initdefault:

u ibdel in-numru 2 għal-runlevel mixtieq bl-editur tat-test preferut tiegħek, bħal vim (deskritt f'Kif tuża l-editur vi/vim fil-Linux – Parti 2 ta 'din is-serje).

Sussegwentement, mexxi bħala għerq.

# shutdown -r now

Dak l-aħħar kmand jerġa’ jibda s-sistema, u jġiegħelha tibda fil-livell ta’ run speċifikat matul il-boot li jmiss, u se jmexxi l-iskripts li jinsabu fil-/etc/rc[runlevel].d direttorju sabiex jiddeċiedi liema servizzi għandhom jinbdew u liema m’għandhomx. Per eżempju, għal runlevel 2 fis-sistema li ġejja.

Biex nippermettu jew tiddiżattiva s-servizzi tas-sistema fuq il-but, se nużaw il-kmand chkconfig f'CentOS/openSUSE u sysv-rc-conf f'Debian u d-derivattivi. Din l-għodda tista 'wkoll turina x'inhu l-istat prekonfigurat ta' servizz għal runlevel partikolari.

Aqra wkoll: Kif Twaqqaf u Twaqqaf Servizzi Mhux mixtieqa fil-Linux

Elenkar tal-konfigurazzjoni tal-livell tar-runlevel għal servizz.

# chkconfig --list [service name]
# chkconfig --list postfix
# chkconfig --list mysqld

Fl-immaġini t'hawn fuq nistgħu naraw li postfix huwa ssettjat biex jibda meta s-sistema tidħol f'runlevels 2 sa 5, filwaqt li mysqld b> se tkun qed taħdem awtomatikament għal runlevels 2 sa 4. Issa ejja ngħidu li din mhix l-imġieba mistennija.

Pereżempju, għandna bżonn nixgħel mysqld għal runlevel 5 ukoll, u titfi l-postfix għal runlevels 4 u 5. Hawn x'se nagħmlu f'kull każ (ħaddmu l- wara kmandi bħala għerq).

# chkconfig --level [level(s)] service on
# chkconfig --level 5 mysqld on
# chkconfig --level [level(s)] service off
# chkconfig --level 45 postfix off

Issa se nwettqu kompiti simili f'sistema ibbażata fuq Debian billi tuża sysv-rc-conf.

Konfigurazzjoni ta' servizz biex jibda awtomatikament fuq runlevel speċifiku u ma jħallihx jibda fuq l-oħrajn kollha.

1. Ejja nużaw il-kmand li ġej biex naraw x'inhuma r-runlevels fejn mdadm huwa kkonfigurat biex jibda.

# ls -l /etc/rc[0-6].d | grep -E 'rc[0-6]|mdadm'

2. Aħna se nużaw sysv-rc-conf biex nipprevjenu li mdadm jibda fuq il-livelli kollha ta' tmexxija ħlief 2. Sempliċement iċċekkja jew iċċekkja (bl-ispazju bar) kif mixtieq (tista 'timxi 'l fuq, 'l isfel, ix-xellug u l-lemin bit-tasti tal-vleġġa).

# sysv-rc-conf

Imbagħad agħfas q biex tieqaf.

3. Se nibdew mill-ġdid is-sistema u nerġgħu nħaddmu l-kmand minn PASS 1.

# ls -l /etc/rc[0-6].d | grep -E 'rc[0-6]|mdadm'

Fl-immaġni ta' hawn fuq nistgħu naraw li mdadm huwa kkonfigurat biex jibda biss fuq runlevel 2.

Xi ngħidu dwar systemd?

systemd huwa maniġer ieħor tas-servizz u tas-sistema li qed jiġi adottat minn diversi distribuzzjonijiet ewlenin tal-Linux. Għandu l-għan li jippermetti li jsir aktar proċessar b'mod parallel waqt l-istartjar tas-sistema (b'differenza minn sysvinit, li dejjem għandu t-tendenza li jkun aktar bil-mod għax jibda proċessi wieħed kull darba, jiċċekkja jekk wieħed jiddependix fuq ieħor, u jistenna għal daemons biex iniedu sabiex ikunu jistgħu jibdew aktar servizzi), u biex iservu bħala ġestjoni dinamika tar-riżorsi għal sistema li taħdem.

Għalhekk, is-servizzi jinbdew meta jkun meħtieġ (biex jiġi evitat li jikkunsmaw ir-riżorsi tas-sistema) minflok ma jiġu mnedija mingħajr raġuni soda waqt il-boot.

Meta tara l-istatus tal-proċessi kollha li qed jaħdmu fis-sistema tiegħek, kemm is-servizzi systemd indiġeni kif ukoll SysV, mexxi l-kmand li ġej.

# systemctl

Il-kolonna TAGĦBIJA turi jekk id-definizzjoni tal-unità (irreferi għall-kolonna UNITA, li turi s-servizz jew xi ħaġa miżmuma minn systemd) kinitx mgħobbija sew, filwaqt li l-ATTIV u SUB kolonni juru l-istatus attwali ta 'tali unità.

Meta l-kolonna ATTIV tindika li l-istatus ta 'unità mhuwiex attiv, nistgħu niċċekkjaw x'ġara bl-użu.

# systemctl status [unit]

Pereżempju, fl-immaġni ta' hawn fuq, media-samba.mount jinsab fi stat fallut. Ejja niġru.

# systemctl status media-samba.mount

Nistgħu naraw li media-samba.mount falla minħabba li l-proċess tal-muntaġġ fuq il-host dev1 ma setax isib is-sehem tan-netwerk fuq //192.168.0.10/gacanepa.

Bidu jew Twaqqaf Servizzi

Ladarba s-sehem tan-netwerk //192.168.0.10/gacanepa isir disponibbli, ejja nippruvaw nibdew, imbagħad nieqfu, u fl-aħħar ibdew mill-ġdid l-unità media-samba.mount. Wara li twettaq kull azzjoni, ejja nħaddmu systemctl status media-samba.mount biex tivverifika l-istatus tagħha.

# systemctl start media-samba.mount
# systemctl status media-samba.mount
# systemctl stop media-samba.mount
# systemctl restart media-samba.mount
# systemctl status media-samba.mount

Taħt systemd tista' tattiva jew tiddiżattiva servizz meta jibda.

# systemctl enable [service] 		# enable a service 
# systemctl disable [service] 		# prevent a service from starting at boot

Il-proċess ta' kif servizz jibda jaħdem awtomatikament fuq il-boot jikkonsisti fiż-żieda jew it-tneħħija ta' links simboliċi fid-direttorju /etc/systemd/system/multi-user.target.wants.

Inkella, tista 'ssir taf l-istatus attwali ta' servizz (attivat jew diżattivat) bil-kmand.

# systemctl is-enabled [service]

Pereżempju,

# systemctl is-enabled postfix.service

Barra minn hekk, tista 'terġa' tibda jew tagħlaq is-sistema biha.

# systemctl reboot
# systemctl shutdown

Upstart

Upstart huwa sostitut ibbażat fuq l-avvenimenti għad-daemon /sbin/init u twieldet mill-ħtieġa li jinbdew servizzi biss, meta jkunu meħtieġa (ukoll jissorveljahom waqt li jkunu qed jaħdmu), u jimmaniġġjaw l-avvenimenti hekk kif iseħħu, u b'hekk jaqbżu s-sistema sysvinit klassika bbażata fuq id-dipendenza.

Kien oriġinarjament żviluppat għad-distribuzzjoni Ubuntu, iżda jintuża fir-Red Hat Enterprise Linux 6.0. Għalkemm kien intenzjonat li jkun adattat għall-iskjerament fid-distribuzzjonijiet kollha tal-Linux bħala sostitut għal sysvinit, maż-żmien kienet mittiefsa minn systemd. Fl-14 ta' Frar, 2014, Mark Shuttleworth (fundatur ta' Canonical Ltd.) ħabbar li rilaxxi futuri ta' Ubuntu se jużaw systemd bħala d-demon init default.

Minħabba li l-iskript tal-istartjar SysV għas-sistema ilu daqshekk komuni għal żmien twil, numru kbir ta’ pakketti ta’ softwer jinkludu skripts tal-istartjar SysV. Biex jakkomoda pakketti bħal dawn, Upstart jipprovdi mod ta' kompatibilità: Imexxi skripts tal-istartjar SysV fil-postijiet tas-soltu (/etc/rc.d/rc?.d, /etc/init.d/ rc?.d, /etc/rc?.d, jew post simili). Għalhekk, jekk ninstallaw pakkett li għadu ma jinkludix script ta 'konfigurazzjoni Upstart, xorta għandu jitnieda bil-mod tas-soltu.

Barra minn hekk, jekk ikollna utilitajiet installati bħal chkconfig, għandek tkun tista' tużahom biex timmaniġġja s-servizzi tiegħek ibbażati fuq SysV bħalma nagħmlu fuq sistemi bbażati fuq sysvinit.

L-iskripts Upstart jappoġġjaw ukoll il-bidu jew it-twaqqif ta' servizzi bbażati fuq varjetà usa' ta' azzjonijiet milli jagħmlu l-iskripts tal-istartjar SysV; pereżempju, Upstart tista’ tniedi servizz kull meta jkun imwaħħal apparat ta’ hardware partikolari.

Sistema li tuża Upstart u l-iskripts indiġeni tagħha tissostitwixxi esklussivament il-fajl /etc/inittab u d-direttorji tal-iskripts tal-istartjar SysV speċifiċi għal-runlevel b'.conf skripts fid-direttorju /etc/init.

Dawn l-iskripts *.conf (magħrufa wkoll bħala definizzjonijiet ta' xogħol) ġeneralment jikkonsistu f'dan li ġej:

    1. Deskrizzjoni tal-proċess.
    2. Runlevels fejn għandu jibda l-proċess jew avvenimenti li għandhom iqanqlu.
    3. Runlevels fejn il-proċess għandu jitwaqqaf jew avvenimenti li għandhom iwaqqfuh.
    4. Għażliet.
    5. Kmand biex tniedi l-proċess.

    Pereżempju,

    # My test service - Upstart script demo description "Here goes the description of 'My test service'" author "Dave Null <[email >"
    # Stanzas
    
    #
    # Stanzas define when and how a process is started and stopped
    # See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
    # When to start the service
    start on runlevel [2345]
    # When to stop the service
    stop on runlevel [016]
    # Automatically restart process in case of crash
    respawn
    # Specify working directory
    chdir /home/dave/myfiles
    # Specify the process/command (add arguments if needed) to run
    exec bash backup.sh arg1 arg2
    

    Biex tapplika l-bidliet, ikollok bżonn tgħid lil upstart biex terġa' tgħabbi l-konfigurazzjoni tagħha.

    # initctl reload-configuration
    

    Imbagħad ibda xogħolek billi ttajpja l-kmand li ġej.

    $ sudo start yourjobname
    

    Fejn yourjobname huwa l-isem tax-xogħol li ġie miżjud qabel bl-iskript yourjobname.conf.

    Gwida ta’ referenza aktar kompleta u dettaljata għal Upstart hija disponibbli fis-sit web tal-proġett taħt il-menu \Cookbook.

    Sommarju

    Għarfien tal-proċess tal-boot tal-Linux huwa meħtieġ biex jgħinek fil-kompiti tas-soluzzjoni tal-problemi kif ukoll biex tadatta l-prestazzjoni tal-kompjuter u t-tħaddim tas-servizzi għall-bżonnijiet tiegħek.

    F'dan l-artikolu analizzajna x'jiġri mill-mument meta tagħfas is-swiċċ Power biex tixgħel il-magna sakemm ikollok interface tal-utent kompletament operattiv. Nittama li tgħallimt taqrah daqskemm għamilt jien waqt li għamiltu flimkien. Ħossok liberu li tħalli l-kummenti jew il-mistoqsijiet tiegħek hawn taħt. Aħna dejjem ħerqana li nisimgħu mill-qarrejja tagħna!