LFCS: Pagdumala sa Proseso ug Serbisyo sa Pagsugod sa Sistema (SysVinit, Systemd ug Upstart) - Bahin 7


Pipila ka bulan ang milabay, gipahibalo sa Linux Foundation ang LFCS (Linux Foundation Certified Sysadmin) nga sertipikasyon, usa ka kulbahinam nga bag-ong programa kansang katuyoan mao ang pagtugot sa mga indibidwal gikan sa tanan nga mga tumoy sa kalibutan nga makakuha og sertipikasyon sa paghimo sa sukaranan hangtod sa tunga nga mga buluhaton sa pagdumala sa sistema sa mga sistema sa Linux. Naglakip kini sa pagsuporta sa nagdagan na nga mga sistema ug serbisyo, kauban ang una nga pagpangita sa problema ug pagtuki, dugang ang katakus sa pagdesisyon kung kanus-a ipasaka ang mga isyu sa mga team sa engineering.

Ang mosunod nga video naghulagway sa usa ka mubo nga pasiuna sa Ang Linux Foundation Certification Program.

Kini nga post mao ang Bahin 7 sa usa ka serye sa 10-tutorial, dinhi sa kini nga bahin, among ipasabut kung giunsa ang Pagdumala sa Proseso ug Serbisyo sa Pagsugod sa Sistema sa Linux, nga gikinahanglan alang sa eksamin sa sertipikasyon sa LFCS.

Pagdumala sa Proseso sa Pagsugod sa Linux

Ang proseso sa pag-boot sa usa ka sistema sa Linux naglangkob sa daghang mga hugna, ang matag usa girepresentahan sa usa ka lahi nga sangkap. Ang mosunod nga diagram mubo nga nagsumaryo sa proseso sa pag-boot ug nagpakita sa tanan nga mga nag-unang sangkap nga nahilambigit.

Kon imong pug-on ang Power nga buton sa imong makina, ang firmware nga gitipigan sa EEPROM chip sa motherboard mag-initial sa POST ( Power-On Self Test) aron masusi ang kahimtang sa mga kahinguhaan sa hardware sa sistema. Kung nahuman na ang POST, pangitaon ug ikarga sa firmware ang 1st stage boot loader, nga nahimutang sa MBR o sa EFI partition sa unang available nga disk, ug naghatag ug kontrol niini.

Ang MBR nahimutang sa unang sektor sa disk nga gimarkahan nga bootable sa BIOS setting ug 512 bytes ang gidak-on.

  1. Unang 446 ka byte: Ang bootloader adunay duha ka executable code ug text message sa error.
  2. Sunod nga 64 ka byte: Ang partition table adunay rekord sa matag usa sa upat ka partition (primary o extended). Lakip sa ubang mga butang, ang matag rekord nagpakita sa status (aktibo/dili aktibo), gidak-on, ug pagsugod/pagtapos nga mga sektor sa matag partisyon.
  3. Katapusang 2 bytes: Ang magic number nagsilbi nga validation check sa MBR.

Ang mosunod nga sugo naghimo ug backup sa MBR (niining pananglitan, /dev/sda mao ang unang hard disk). Ang resulta nga payl, mbr.bkp mahimong magamit kung ang partition table mahimong corrupt, pananglitan, dili ma-bootable ang sistema.

Siyempre, aron magamit kini sa ulahi kung adunay kinahanglan, kinahanglan naton kini i-save ug itago sa lain nga lugar (sama sa usa ka USB drive, pananglitan). Kana nga file makatabang kanamo sa pagpasig-uli sa MBR ug makapadayon kami pag-usab kung ug kung dili namon usbon ang layout sa hard drive sa kasamtangan.

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

Alang sa mga sistema nga naggamit sa EFI/UEFI nga pamaagi, ang UEFI firmware nagbasa sa mga setting niini aron mahibal-an kung unsang aplikasyon sa UEFI ang ilusad ug diin gikan (ie, diin ang disk ug partition sa Ang EFI partition nahimutang).

Sunod, ang ika-2 nga yugto boot loader (aka boot manager) gikarga ug gipadagan. Ang GRUB [GRand Unified Boot] mao ang labing kanunay nga gigamit nga boot manager sa Linux. Usa sa duha ka lahi nga bersyon makita sa kadaghanan sa mga sistema nga gigamit karon.

  1. GRUB legacy configuration file: /boot/grub/menu.lst (karaan nga mga distribusyon, dili suportado sa EFI/UEFI firmwares).
  2. GRUB2 configuration file: lagmit, /etc/default/grub.

Bisan tuod ang mga tumong sa LFCS nga eksaminasyon dili tin-aw nga mangayo og kahibalo mahitungod sa GRUB internals, kon ikaw maisogon ug makahimo sa pagsamok sa imong sistema (mahimo nimong sulayan kini una sa usa ka virtual nga makina, kung mahimo), kinahanglan nimo nga modagan.

# update-grub

Isip root human sa pag-usab sa configuration sa GRUB aron magamit ang mga kausaban.

Sa panguna, ang GRUB nagkarga sa default kernel ug ang initrd o initramfs nga hulagway. Sa pipila ka mga pulong, initrd o initramfs makatabang sa paghimo sa hardware detection, ang kernel module loading ug ang device pagdiskobre nga gikinahanglan aron sa pagkuha sa tinuod nga gamut filesystem mounted.

Sa higayon nga ang tinuod nga root filesystem nahuman na, ang kernel mopatuman sa sistema ug service manager (init o systemd, kansang proseso identification o PID kanunay 1) aron masugdan ang normal nga user- proseso sa pag-boot sa wanang aron mapresentar ang usa ka interface sa gumagamit.

Parehong init ug systemd ang mga daemon (mga proseso sa background) nga nagdumala sa ubang mga daemon, ingon ang una nga serbisyo nga magsugod (sa panahon sa boot) ug ang katapusan nga serbisyo nga tapuson (sa panahon sa pagsira).

Mga Serbisyo sa Pagsugod (SysVinit)

Ang konsepto sa runlevels sa Linux nagtino sa lain-laing mga paagi sa paggamit sa usa ka sistema pinaagi sa pagkontrolar sa mga serbisyo nga nagdagan. Sa laing pagkasulti, ang usa ka runlevel nagkontrol kung unsa nga mga buluhaton ang mahimo sa karon nga estado sa pagpatuman = runlevel (ug kung unsa ang dili mahimo).

Sa naandan, kini nga proseso sa pagsugod gihimo base sa mga kombensiyon nga naggikan sa System V UNIX, uban sa sistema nga nagpasa sa pagpatuman sa mga koleksyon sa mga script nga magsugod ug mohunong sa mga serbisyo samtang ang makina misulod sa usa ka piho nga runlevel (nga, sa laing pagkasulti , lahi nga paagi sa pagpadagan sa sistema).

Sulod sa matag runlevel, ang indibidwal nga mga serbisyo mahimong itakda nga modagan, o i-shut down kung modagan. Ang pinakabag-o nga mga bersyon sa pipila ka dagkong mga distribusyon nagpalayo gikan sa System V nga sumbanan pabor sa bag-o nga serbisyo ug system manager nga gitawag og systemd (nga nagpasabot sa system daemon), apan kasagaran suportahan ang sysv nga mga sugo alang sa mga katuyoan sa pagpahiuyon. Kini nagpasabot nga mahimo nimong ipadagan ang kadaghanan sa iladong sysv init nga mga himan sa usa ka systemd-based distribution.

Basaha Usab: Nganong gipulihan sa 'systemd' ang 'init' sa Linux

Gawas sa pagsugod sa proseso sa sistema, ang init motan-aw sa /etc/inittab nga payl aron pagdesisyon kon unsa nga runlevel ang kinahanglang isulod.

Para magbalhinbalhin tali sa mga runlevel, mahimo ra natong i-issue ang runlevel change gamit ang init command: init N (diin ang N maoy usa sa mga runlevel nga gilista sa ibabaw). Palihug timan-i nga dili kini ang girekomendar nga paagi sa pagkuha sa usa ka running system ngadto sa lain nga runlevel tungod kay wala kini maghatag ug pasidaan sa mga kasamtangan nga naka-log-in nga mga user (sa ingon hinungdan nga sila mawad-an sa trabaho ug ang mga proseso sa pagtapos sa abnormally).

Hinoon, ang shutdown nga sugo kinahanglang gamiton sa pagsugod pag-usab sa sistema (nga mopadala una og mensahe sa pasidaan ngadto sa tanang naka-log-in nga tiggamit ug mobabag sa bisan unsang dugang nga mga login; kini dayon mosinyas sa init sa pagbalhin sa runlevel); bisan pa niana, ang default runlevel (ang usa nga ang sistema mag-boot) kinahanglang i-edit una sa /etc/inittab file.

Tungod niana nga rason, sunda kini nga mga lakang sa husto nga pagbalhin tali sa runlevels, Ingon nga gamut, pangitaa ang mosunod nga linya sa /etc/inittab.

id:2:initdefault:

ug usba ang numero 2 alang sa gusto nga runlevel gamit ang imong gusto nga editor sa teksto, sama sa vim (gihulagway sa Giunsa paggamit ang vi/vim editor sa Linux - Bahin 2 niini nga serye).

Sunod, pagdagan ingon gamut.

# shutdown -r now

Kana nga katapusan nga sugo mag-restart sa sistema, hinungdan nga kini magsugod sa gitakda nga runlevel atol sa sunod nga boot, ug magpadagan sa mga script nga anaa sa /etc/rc[runlevel].d direktoryo aron makadesisyon kung unsang mga serbisyo ang kinahanglan sugdan ug kung unsa ang dili. Pananglitan, alang sa runlevel 2 sa mosunod nga sistema.

Para ma-enable o ma-disable ang system services sa boot, among gamiton ang chkconfig command sa CentOS/openSUSE ug sysv-rc-conf sa Debian ug derivatives. Kini nga himan mahimo usab nga magpakita kanamo kung unsa ang preconfigured nga kahimtang sa usa ka serbisyo alang sa usa ka partikular nga runlevel.

Basaha Usab: Unsaon Paghunong ug Pag-disable sa Dili Gusto nga mga Serbisyo sa Linux

Paglista sa runlevel configuration alang sa usa ka serbisyo.

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

Sa hulagway sa ibabaw atong makita nga ang postfix gitakda nga magsugod kung ang sistema mosulod sa runlevels 2 ngadto sa 5, samtang mysqld Ang b> modagan pinaagi sa default para sa runlevels 2 hangtod sa 4. Karon hunahunaa nga dili kini ang gipaabut nga pamatasan.

Pananglitan, kinahanglan natong i-on ang mysqld para usab sa runlevel 5, ug i-off ang postfix para sa runlevel 4 ug 5. Ania ang atong buhaton sa matag kaso (padagan ang mosunod nga mga sugo isip gamut).

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

Magbuhat na kami ug susamang mga buluhaton sa Debian-based nga sistema gamit ang sysv-rc-conf.

Pag-configure sa usa ka serbisyo aron awtomatiko nga magsugod sa usa ka piho nga runlevel ug mapugngan kini nga magsugod sa tanan nga uban pa.

1. Atong gamiton ang mosunod nga sugo aron makita kung unsa ang mga runlevel diin ang mdadm gi-configure aron magsugod.

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

2. Gamiton namo ang sysv-rc-conf aron mapugngan ang mdadm nga magsugod sa tanang runlevel gawas sa 2. Susiha lang o tangtangon ang tsek (uban ang space bar) kung gusto nimo (mahimo ka nga molihok pataas, paubos, wala, ug tuo gamit ang mga arrow key).

# sysv-rc-conf

Dayon pindota ang q aron moundang.

3. Atong i-restart ang sistema ug ipadagan pag-usab ang command gikan sa STEP 1.

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

Sa hulagway sa ibabaw atong makita nga ang mdadm gi-configure nga magsugod lang sa runlevel 2.

Unsa ang mahitungod sa systemd?

Ang systemd maoy laing serbisyo ug system manager nga gisagop sa daghang dagkong distribusyon sa Linux. Tumong niini nga tugotan ang daghang pagproseso nga himuon nga managsama sa panahon sa pagsugod sa sistema (dili sama sa sysvinit, nga kanunay nga labi ka hinay tungod kay magsugod kini sa mga proseso sa usa ka higayon, susihon kung ang usa nagdepende sa lain, ug naghulat alang sa mga daemon nga ilunsad aron mas daghang serbisyo ang makasugod), ug magsilbi nga dinamikong pagdumala sa kapanguhaan sa usa ka nagdagan nga sistema.

Sa ingon, ang mga serbisyo gisugdan kung gikinahanglan (aron malikayan ang pagkonsumo sa mga kapanguhaan sa sistema) imbes nga ilunsad nga wala’y lig-on nga hinungdan sa panahon sa pag-boot.

Sa pagtan-aw sa kahimtang sa tanang proseso nga nagdagan sa imong sistema, pareho sa systemd nga lumad ug SysV nga serbisyo, padagana ang mosunod nga sugo.

# systemctl

Ang LOAD column nagpakita kung ang unit definition (refer sa UNIT column, nga nagpakita sa serbisyo o bisan unsa nga gimentinar sa systemd) husto nga nakarga, samtang ang ACTIVE< Ang ug SUB nga mga kolum nagpakita sa kasamtangan nga kahimtang sa maong yunit.

Kung ang AKTIBO nga kolum nagpakita nga ang kahimtang sa usa ka yunit dili aktibo, mahimo naton susihon kung unsa ang nahitabo gamit.

# systemctl status [unit]

Pananglitan, sa hulagway sa ibabaw, media-samba.mount naa sa pakyas nga kahimtang. Modagan ta.

# systemctl status media-samba.mount

Atong makita nga ang media-samba.mount napakyas tungod kay ang proseso sa pag-mount sa host dev1 wala makit-an ang bahin sa network sa //192.168.0.10/gacanepa.

Pagsugod o Paghunong sa mga Serbisyo

Sa higayon nga magamit na ang bahin sa network //192.168.0.10/gacanepa, sulayan nato ang pagsugod, dayon paghunong, ug sa kataposan i-restart ang yunit media-samba.mount. Human sa pagbuhat sa matag aksyon, atong padagan ang systemctl status media-samba.mount aron masusi ang kahimtang niini.

# 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

Ubos sa systemd mahimo nimong palihokon o i-disable ang usa ka serbisyo kung kini mag-boot.

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

Ang proseso sa pagpagana o pag-disable sa usa ka serbisyo nga awtomatikong magsugod sa boot naglangkob sa pagdugang o pagtangtang sa simbolikong mga link sa /etc/systemd/system/multi-user.target.wants nga direktoryo.

Sa laing paagi, mahimo nimong mahibal-an ang kasamtangan nga kahimtang sa usa ka serbisyo (gipaandar o gibabagan) gamit ang mando.

# systemctl is-enabled [service]

Pananglitan,

# systemctl is-enabled postfix.service

Dugang pa, mahimo nimong i-reboot o i-shut down ang sistema gamit ang.

# systemctl reboot
# systemctl shutdown

Pagsugod

Ang Upstart usa ka puli nga gibase sa panghitabo alang sa /sbin/init nga daemon ug nahimugso tungod sa panginahanglan sa pagsugod sa mga serbisyo lamang, kung kini gikinahanglan (usab nagdumala kanila samtang sila nagdagan), ug pagdumala sa mga panghitabo samtang kini mahitabo, sa ingon milabaw sa klasiko, dependency-based sysvinit system.

Kini orihinal nga gihimo alang sa pag-apod-apod sa Ubuntu, apan gigamit sa Red Hat Enterprise Linux 6.0. Bisan tuod gituyo kini nga angayan sa pag-deploy sa tanang distribusyon sa Linux isip puli sa sysvinit, sa ngadtongadto kini gitabonan sa systemd. Niadtong Pebrero 14, 2014, si Mark Shuttleworth (nagtukod sa Canonical Ltd.) mipahibalo nga ang umaabot nga pagpagawas sa Ubuntu mogamit sa systemd isip default init nga daemon.

Tungod kay ang SysV startup script para sa sistema kay komon na kaayo sa dugay nga panahon, daghang mga software packages naglakip sa SysV startup scripts. Aron ma-accommodate ang maong mga package, ang Upstart naghatag ug compatibility mode: Kini nagpadagan sa SysV startup scripts sa naandang mga lokasyon (/etc/rc.d/rc?.d, /etc/init.d/ rc?.d, /etc/rc?.d, o susama nga lokasyon). Sa ingon, kung mag-install kami usa ka pakete nga wala pa maglakip sa usa ka script sa pag-configure sa Upstart, kinahanglan nga maglansad gihapon kini sa naandan nga paagi.

Dugang pa, kung nag-install kami mga utilities sama sa chkconfig, kinahanglan nimo nga magamit kini aron madumala ang imong mga serbisyo nga nakabase sa SysV sama sa among buhaton sa mga sistema nga nakabase sa sysvinit.

Ang mga bag-ong script nagsuporta usab sa pagsugod o paghunong sa mga serbisyo base sa mas lapad nga lainlaing mga aksyon kaysa sa mga script sa pagsugod sa SysV; pananglitan, ang Upstart mahimong maglunsad og usa ka serbisyo sa matag higayon nga ang usa ka partikular nga hardware device gilakip.

Usa ka sistema nga naggamit sa Upstart ug sa lumad nga mga script niini nga eksklusibong nagpuli sa /etc/inittab nga payl ug sa runlevel-specific nga SysV startup script directory nga adunay .conf mga script sa /etc/init nga direktoryo.

Kini nga mga *.conf nga mga script (nailhan usab nga mga kahulugan sa trabaho) sa kasagaran naglangkob sa mga musunud:

    1. Paghulagway sa proseso.
    2. Mga lebel sa pagdagan kung diin kinahanglan nga modagan ang proseso o mga panghitabo nga mag-trigger niini.
    3. Mga lebel sa pagdagan kung diin ang proseso kinahanglan ihunong o mga panghitabo nga kinahanglan nga mohunong niini.
    4. Mga kapilian.
    5. Sugo sa paglansad sa proseso.

    Pananglitan,

    # 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
    

    Aron ma-apply ang mga pagbag-o, kinahanglan nimo nga isulti sa upstart nga i-reload ang configuration niini.

    # initctl reload-configuration
    

    Dayon sugdi ang imong trabaho pinaagi sa pag-type sa mosunod nga sugo.

    $ sudo start yourjobname
    

    Diin ang yourjobname mao ang ngalan sa trabaho nga gidugang sa sayo pa uban sa yourjobname.conf script.

    Ang mas kompleto ug detalyado nga giya sa pakisayran para sa Upstart anaa sa web site sa proyekto ubos sa menu nga \Cookbook.

    Summary

    Ang kahibalo sa proseso sa pag-boot sa Linux gikinahanglan aron matabangan ka sa mga buluhaton sa pag-troubleshoot ingon man sa pagpahiangay sa pasundayag sa kompyuter ug pagpadagan sa mga serbisyo sa imong mga panginahanglan.

    Niini nga artikulo among gisusi kung unsa ang mahitabo gikan sa higayon nga imong gipugos ang switch sa Power aron ma-on ang makina hangtod makuha nimo ang usa ka hingpit nga operasyon sa user interface. Nanghinaut ko nga nakakat-on ka sa pagbasa niini sama sa akong nakat-unan samtang gihiusa kini. Palihug ibilin ang imong mga komento o pangutana sa ubos. Kanunay kaming nagpaabut nga makadungog gikan sa among mga magbabasa!