Systemd Service File

Systemd Service File



Sa Linux, ipinapakita ng systemctl status output na ang serbisyo ay na-load sa pamamagitan ng isang file na tinatawag na service file. Maaaring ma-access ang mga file na ito sa /lib/systemd/system o /etc/systemd/system mga direktoryo.

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 .