Ang mga file ng serbisyo ay mayroon .serbisyo extension at naglalaman ng mga tagubilin na kinakailangan ng sistemad upang pamahalaan ang isang serbisyo.
Ang sistemad pinamamahalaan ng init system ang pagsisimula ng system gamit ang Yunit . Ang unit ay isang bagay na nagsasagawa ng isang gawain o aksyon, tulad ng pamamahala ng isang serbisyo, na kinabibilangan ng pagkontrol at pagsubaybay dito. Ang mga unit na ito ay mahalagang mga file na tinatawag na mga file ng serbisyo na kinabibilangan ng mga dependency at command ng unit. Ang mga file na ito ay mahalaga sa mahusay na pagkontrol sa mga proseso sa background, at pamamahala ng mga mapagkukunan.
Sa gabay, tuklasin ko ang systemd service file, ang istraktura nito, at ang mga pangunahing direktiba na kumokontrol sa serbisyo.
Kapag nagtatrabaho sa systemd, ang mga tuntunin systemd service file at systemd unit file ay kadalasang ginagamit nang palitan dahil sa teknikal na tinutukoy nila ang parehong bagay.
Ano ang Systemd Service File
Sa Linux, pinamamahalaan ng systemd ang mga serbisyo gamit ang mga file ng serbisyo na naglalaman ng mga tagubilin sa pagsasaayos upang maunawaan at maisagawa ng systemd.
Upang ilista ang mga yunit, gamitin ang systemctl kasama ang –listahan-mga yunit utos.
systemctl --listahan-mga yunit
Upang basahin ang file ng serbisyo ng anumang serbisyo, gamitin ang pusa utos na may landas ng file.
pusa [ / service-file-path ]Halimbawa, upang makita ang file ng serbisyo ng ssh.service gamitin ang ibinigay na utos.
pusa / lib / sistemad / sistema / ssh.service
Anatomy ng Systemd Service File
Sa pangkalahatan, ang mga systemd service unit file ay naglalaman ng tatlong seksyon.
- Yunit
- Serbisyo
- I-install
Ang file ng unit na partikular sa serbisyo ay magkakaroon ng partikular na seksyon na tinatawag na Serbisyo seksyon.
Tandaan na ang serbisyo ay isang uri lamang ng yunit. Ang isang unit ay maaaring magkaroon ng iba't ibang uri gaya ng socket, device, mount, automount, swap, target, timer, slice, at scope. Ang mga seksyong ito ay inilalagay sa pagitan ng mga seksyon ng Unit at Pag-install. Ang extension ng file ay papalitan din ng kani-kanilang uri ng unit, halimbawa, ang uri ng socket unit ay magkakaroon ng a .socket extension ng file.
Tandaan: Sa gabay na ito, tututukan ko ang uri ng unit ng serbisyo dahil sa malawak na paggamit nito ng mga administrator at developer.
Ang mga seksyong ito ay nakapaloob sa mga square bracket ([]). Ang bawat seksyon ay naglalaman ng isang kaugnay na set ng pagtuturo. Ang isang pangkalahatang istraktura ng isang file ng serbisyo ay ibinigay sa ibaba.
[ Yunit ]Direktiba1 =Pagtuturo 1
Direktiba2 =Pagtuturo 2
[ Serbisyo ]
Direktiba1 =Pagtuturo 1
Direktiba2 =Pagtuturo 2
[ I-install ]
Direktiba1 =Pagtuturo 1
Direktiba2 =Pagtuturo 2
Ang pagkakasunud-sunod ng mga seksyon ay maaaring baguhin; gayunpaman, ang nabanggit na kaayusan ay karaniwang sinusunod.
[Yunit] Seksyon
Ang seksyon ng unit ay naglalaman ng paglalarawan ng unit at mga dependency ng unit. Ang seksyong ito, ayon sa convention, ay inilalagay sa tuktok ng file ng serbisyo. Ang mga karaniwang ginagamit na direktiba ay nakalista sa ibaba:
Direktiba | Paglalarawan |
Paglalarawan | Ang direktiba na ito ay ginagamit upang banggitin ang pangalan ng serbisyo. Ang haba ng paglalarawan ay hindi dapat lumampas sa 80 character. |
Dokumentasyon | Ang direktiba na ito ay naglalaman ng man page o URL ng serbisyo. |
Nangangailangan | Ang direktiba na ito ay ginagamit upang banggitin ang dependency sa kasalukuyang serbisyo. Kung ang pag-activate ng serbisyo ng dependency na ito ay hindi ginanap, ang kasalukuyang serbisyo ay hindi sisimulan. |
Gusto | Ang direktiba na ito ay ginagamit upang banggitin ang dependency sa kasalukuyang serbisyo. Gayunpaman, ang serbisyo ng dependency na ito ay hindi kinakailangang i-activate upang patakbuhin ang kasalukuyang serbisyo. |
dati | Matapos ma-activate ang kasalukuyang unit, magsisimula ang serbisyong binanggit sa direktiba na ito. |
Pagkatapos | Bago ma-activate ang kasalukuyang unit, magsisimula ang serbisyong binanggit sa direktiba na ito. |
BindsTo | Iniuugnay ng direktiba na ito ang kasalukuyang serbisyo sa nabanggit na serbisyo. Kung mag-restart ang naka-link na serbisyo, magre-restart din ang mga kasalukuyang serbisyo. |
Bukod sa mga direktiba na ito, may dalawa pang direktiba; Kundisyon at Igiit. Maraming mga serbisyo ang nangangailangan ng mga partikular na kundisyon ng system upang matagumpay na tumakbo, at ang mga direktiba na ito ay ginagamit upang banggitin ang mga kundisyon.
[I-install] Seksyon
Ang seksyong ito ay hindi sapilitan at kinakailangan lamang kapag ang isang serbisyo ay nangangailangan ng pag-activate o pag-deactivate sa boot. Bukod dito, ito rin ay upang banggitin ang serbisyo ng alias. Ang mga karaniwang ginagamit na direktiba para sa seksyong Pag-install ay nakalista sa ibaba:
Direktiba | Paglalarawan |
WantedBy | Itinatakda ng direktiba na ito ang run-level * target ng serbisyo. Kung ang isang target ay nakatakda sa multi-user.target pagkatapos ay paganahin ang serbisyo sa antas ng pagtakbo na ito. |
Kinakailangan Ni | Ang direktiba na ito ay may pagkakahawig sa WantedBy, gayunpaman, kahit na walang dependency na binanggit sa direktiba, ang serbisyo ay paganahin. |
alyas | Ginagamit ang direktiba na ito upang paganahin ang serbisyo na may ibang pangalan. Ang isang symlink ay nilikha gamit ang pangalang ito kapag ang serbisyo ay pinagana. |
Kadalasan, ang multi-user.target ay ginagamit bilang WantedBy parameter. Ngunit ano ang multi-user.target?
Kinakatawan ng multi-user.target ang estado ng system na handang tumanggap ng mga hindi graphical na session ng maramihang user. Ito ang estado bago ilunsad ang GUI.
Mayroong iba't ibang mga antas ng pagtakbo ng system, alamin natin ang tungkol sa paggana ng mga antas ng pagtakbo na ito.
Sa systemd, ang mga serbisyo ay pinagsama-sama batay sa mga antas ng pagtakbo, na tinatawag mga target . Ang bawat run-level ay may file na may .target extension sa /etc/systemd/system direktoryo. Tatakbo ang isang serbisyo batay sa estado ng antas ng pagtakbo.
Run Level | Mga target | Estado | Mga file |
0 | patayin | Isara at patayin | poweroff.target |
1 | iligtas | Sinisimulan ang rescue shell | iligtas.target |
2,3,4 | multi-user | Nagsisimula ang multi-user na non-GUI shell | multi-user.target |
5 | graphical | Nagtatatag ng multi-user GUI shell | graphical.target |
6 | i-reboot | I-shut down at i-restart | reboot.target |
[Serbisyo] Seksyon
Binubuo ng seksyong ito ang mga setting ng pagsasaayos para sa serbisyo. Ang pangunahing pagsasaayos ng seksyong ito ay ang pagtukoy sa uri at mga utos na isasagawa sa simula ng serbisyo. Uri at ExecStart ay ang mga pangunahing direktiba na ginagamit upang mag-set up ng isang serbisyo.
Ang iba't ibang uri ng serbisyo ay nakalista sa sumusunod na talahanayan.
Uri ng Serbisyo | Paglalarawan |
simple lang | Ito ang default na uri kapag hindi binanggit ang uri o Busname at ExecStart lang ang binanggit. Isinasagawa muna ng systemd ang pangunahing proseso at pagkatapos ay ang mga follow-up na unit. |
tinidor | Ginagamit ang ganitong uri upang panatilihing tumatakbo ang serbisyo kahit na sarado ang parent service. Pinipigilan nito ang proseso ng bata pagkatapos ng pagsasara ng proseso ng magulang. |
oneshot | Isinasagawa muna ng systemd ang pangunahing proseso at kapag lumabas ang pangunahing proseso, magsisimula ang mga follow-up na unit. |
dbus | Ang serbisyo na may dbus ay ginagamit upang makipag-ugnayan sa isa pang proseso sa bus. Kung binanggit ang pangalan ng bus, isaaktibo ang proseso pagkatapos makuha ang pangalan ng bus. |
ipaalam | Aabisuhan ang serbisyo kapag sinimulan ang proseso. Magpapatuloy ang systemd sa mga follow-up na unit pagkatapos maibigay ang notification. |
walang ginagawa | Hawak nito ang serbisyo hanggang sa maipadala ang lahat ng aktibong trabaho; pangunahing kapaki-pakinabang upang mapabuti ang output ng console. |
Ang mga karaniwang ginagamit na direktiba sa seksyong Serbisyo ay binanggit sa ibaba:
Direktiba | Paglalarawan |
ExecStart | Pinapanatili nito ang buong landas ng utos na isasagawa upang simulan ang proseso. |
ExecStartPre | Pinapanatili nito ang mga utos na dapat isagawa bago magsimula ang pangunahing proseso. |
ExecStartPost | Pinapanatili nito ang mga utos na dapat isagawa pagkatapos magsimula ang pangunahing proseso. |
ExecReload | Pinapanatili nito ang utos na i-reload ang configuration ng serbisyo. |
I-restart | Upang awtomatikong i-restart ang serbisyo sa mga pagkakataon tulad ng on-failure, on-success, on-abnormal, on-abort, at on-watchdog. |
I-restartSec | Upang mapanatili ang bilang ng mga segundo pagkatapos ng serbisyo ay awtomatikong magre-restart. |
Ang ExecStart ay isa sa mga mahahalagang direktiba na ginagamit sa seksyong Serbisyo. Naglalaman ito ng buong landas ng executable na ang serbisyo ay isasagawa sa pag-invoke.
Konklusyon
Ang systemd service file ay isang configuration file na nakabalangkas na may mga direktiba at command upang mapamahalaan ang mga ito ng systemd. Ang mga file na ito ay naglalaman ng mga tagubilin na nagsasaad kung paano pinamamahalaan ng systemd ang isang serbisyo. Sa gabay na ito, sinaklaw ko kung paano i-access ang isang systemd service file, mga seksyon nito, at mga direktiba na namamahala sa mga serbisyo. Upang matuto nang higit pa tungkol sa mga tagubilin sa file ng serbisyo, pakibasa ang opisyal na gabay sa dokumentasyon na natagpuan dito .