Giunsa Paghimo ug Pagdagan ang Bag-ong Mga Yunit sa Serbisyo sa Systemd Gamit ang Shell Script


Pipila ka adlaw ang milabay, nakit-an nako ang usa ka Centos 7 32-bit distro ug gibati nako ang tinguha nga sulayan kini sa usa ka karaan nga 32-bit nga makina. Human sa pag-boot akong naamgohan nga kini adunay bug ug kini nawad-an sa koneksyon sa network, nga kinahanglan nakong i-turn up sa mano-mano matag higayon human sa boot. oras nako i-boot ang akong makina?

Aw, kini yano ra kaayo ug ipakita ko kanimo ang systemd-way gamit ang mga yunit sa serbisyo. Apan una usa ka gamay nga pasiuna sa mga yunit sa serbisyo.

Niini nga artikulo, akong ipatin-aw kung unsa ang usa ka \service unit sa systemd, kung unsa kadali ang paghimo ug pagpadagan sa usa. Akong sulayan nga pasimplehon kung unsa ang mga target, ngano nga gitawag namon sila nga mga koleksyon sa units” ug unsa ang ilang \gusto. Sa katapusan gipahimuslan namon ang usa ka yunit sa serbisyo aron mapadagan ang among kaugalingon nga script pagkahuman sa pamaagi sa pag-boot.

Dayag nga ang imong kompyuter mapuslanon tungod sa mga serbisyo nga gitanyag niini ug aron maangkon kini nga pagpaandar, daghang mga serbisyo ang kinahanglan nga tawgon nga mga botas sa kompyuter ug moabut sa lainlaing lebel. Ang ubang mga serbisyo gitawag nga ipatuman kung ang kompyuter makaabot pananglitan sa lebel sa pagluwas (runlevel 0) ug uban pa kung kini makaabot sa multi-user level (runlevel 3). Mahimo nimong mahanduraw kini nga mga lebel ingon mga target.

Sa yano nga paagi target mao ang usa ka koleksyon sa mga yunit sa serbisyo. Kung gusto nimo tan-awon ang mga yunit sa serbisyo nga nagdagan sa imong graphical.target nga lebel, i-type ang:

# systemctl --type=service

Sama sa imong makita nga ang pipila ka mga serbisyo aktibo ug \nagdagan sa tanang panahon, samtang ang uban nagdagan sa usa ka higayon ug gitapos (gigawas). Kung gusto nimong susihon ang kahimtang sa usa ka serbisyo, i-type ang:

# systemctl status firewalld.service

Sama sa imong makita akong gisusi ang kahimtang sa firewalld.service (tip: mahimo nimong gamiton ang auto-complete alang sa ngalan sa serbisyo). Kini nagpahibalo kanako nga ang serbisyo sa firewalld nagdagan sa tanang panahon ug kini gipalihok.

Ang gi-enable ug disabled nagpasabot nga ang serbisyo permanenteng ma-load o dili, atol sa sunod nga boot matag usa. Sa laing bahin ang pagsugod ug paghunong sa usa ka serbisyo adunay limitasyon sa karon nga sesyon ug dili kini permanente.

Pananglitan, kung nag-type ka:

# systemctl stop firewalld.service
# systemctl status firewalld.service

Imong makita nga ang firewalld.service dili aktibo (patay) apan kini gipalihok gihapon, nga nagpasabot nga sa sunod nga boot kini ikarga. Mao nga kung gusto namon ang usa ka serbisyo nga ma-load sa panahon sa pag-boot sa umaabot kinahanglan namon kini nga mahimo. Pagkadakong konklusyon! Himoon nato ang usa, sayon ra.

Kung moadto ka sa folder:

# cd /etc/systemd/system
# ls -l

Makita nimo ang pipila ka mga link file sa mga serbisyo sa yunit ug pipila ka mga direktoryo sa \gusto sa usa ka target. Pananglitan: kung unsa ang gusto sa multi-user nga target nga ikarga kung ang pamaagi sa boot moabot sa lebel niini, gilista sa direktoryo nga adunay ngalan /etc/systemd/system/multi-user.target.wants/.

# ls multi-user.target.wants/

Sama sa imong makita dili lamang kini naglangkob sa mga serbisyo apan uban pang mga target nga mga koleksyon usab sa mga serbisyo.

Magbuhat ta ug service unit nga naay ngalan connection.service.

# vim connection.service

ug i-type ang mosunod (hit \i” para sa insert mode), i-save kini ug exit (uban ang \esc” ug \:wq!”):

[Unit]
Description = making network connection up
After = network.target

[Service]
ExecStart = /root/scripts/conup.sh

[Install]
WantedBy = multi-user.target

Sa pagpatin-aw sa ibabaw: naghimo kami og usa ka yunit sa tipo sa serbisyo (mahimo ka usab nga maghimo og mga yunit sa target type), among gibutang kini nga loaded human sa network.target (imong masabtan nga ang booting nga pamaagi makaabot sa mga target nga adunay gipiho order) ug gusto namo sa matag higayon nga ang serbisyo magsugod sa pagpatuman sa usa ka bash script nga adunay ngalan nga conup.sh nga among buhaton.

Ang kalingawan magsugod sa kataposang bahin [install]. Nagsulti kini nga kini gusto sa \multi-user.target. Busa kung among palihokon ang among serbisyo usa ka simbolo nga sumpay sa kana nga serbisyo himuon sa sulod sa folder nga multi-user.target.wants! Nakuha ba? Ug kung among gi-disable mapapas kana nga link. Simple ra kaayo.

I-enable lang kini ug susiha:

# systemctl enable connection.service

kini nagpahibalo kanamo nga ang simbolikong sumpay sa multi-user.target.wants folder nahimo na. Susiha kini:

# ls multi-user.target.wants/

Sama sa imong makita nga \connection.service andam na alang sa sunod nga pag-boot, apan kinahanglan una namon nga buhaton ang script file.

# cd /root
# mkdir scripts
# cd scripts
# vim conup.sh

Idugang ang mosunod nga linya sa sulod sa vim ug i-save kini:

#!/bin/bash
nmcli connection up enp0s3

Siyempre kung gusto nimo ang imong script nga ipatuman ang usa ka butang, mahimo nimong i-type ang bisan unsang gusto nimo imbis sa ikaduha nga linya.

Pananglitan,

#!/bin/bash
touch /tmp/testbootfile

nga maghimo usa ka file sa sulod sa /tmp folder (aron masusi nga ang imong serbisyo nagtrabaho).

Kinahanglan usab natong himoon ang script nga ma-executable:

# chmod +x conup.sh

Karon andam na kami. Kung dili nimo gusto nga maghulat hangtod sa sunod nga boot (nakahimo na kini) mahimo namon sugdan ang serbisyo alang sa karon nga pag-type sa sesyon:

# systemctl start connection.service

Voila! Ang akong koneksyon nagdagan ug nagdagan!

Kung gipili nimo nga isulat ang command \touch /tmp/testbootfile sa sulod sa script, aron lang masusi ang function niini, makita nimo kini nga file nga gihimo sa sulod sa /tmp folder.

Naglaum gyud ko nga matabangan ka nga mahibal-an kung unsa ang mga serbisyo, gusto, target ug pagpadagan sa mga script sa panahon sa pag-boot.