Paano Gumawa ng File ng Serbisyo sa Linux

Paano Gumawa Ng File Ng Serbisyo Sa Linux



Ang systemd init system ay bahagi na ngayon ng halos lahat ng distribusyon ng Linux. Bilang isang administrator o developer, lumikha ka ng mga serbisyo na maaaring pamahalaan ng systemd. Halimbawa, kung gusto mong maglunsad ng mga serbisyo sa boot o gusto mong manu-manong kontrolin ang mga ito, maaari itong gawin sa pamamagitan ng custom na file ng serbisyo.

Sa tutorial na ito, pupunta ako sa kung paano lumikha ng isang systemd service file sa Linux.







Ano ang Service File

Bago magpatuloy, unawain natin kung ano ang systemd service file at kung paano ito nilikha sa Linux.



Ang isang systemd service file ay naglalaman ng mga tagubiling itinakda para sa systemd na pamahalaan ang serbisyo. Karaniwan itong naglalaman ng tatlong seksyon:



  • Yunit
  • Serbisyo
  • I-install

Ang Yunit Ang seksyon ay naglalaman ng pangunahing impormasyon tungkol sa serbisyo tulad ng isang maikling paglalarawan, mga pahina ng dokumentasyon, at isang landas sa mga dependency. Ang I-install opsyonal ang seksyon, ngunit kadalasan ay namamahala ito sa kung anong estado ng system ang dapat paganahin ang serbisyo.





Ang Serbisyo Ang seksyon ay karaniwang nasa pagitan ng seksyon ng Unit at Pag-install. Pangunahing naglalaman ito ng uri ng serbisyo at landas ng mga executable na mahalagang mga utos na ipapatupad sa pag-invoke ng serbisyo ng systemd.

Narito ang hitsura ng isang tipikal na istraktura ng file ng serbisyo.



[ Yunit ]

Direktiba1 = tagubilin

Direktiba2 = tagubilin



[ Serbisyo ]

Direktiba1 = tagubilin

Direktiba2 = tagubilin



[ I-install ]

Direktiba1 = tagubilin

Direktiba2 = tagubilin

Dito, ang mga direktiba ay mga parameter na kumukuha ng kani-kanilang input. Halimbawa, ang Paglalarawan Ang direktiba ay tumatagal ng isang string ng pangalan ng serbisyo. Sa katulad na paraan, ExecStart isinasaalang-alang ang kumpletong landas ng maipapatupad.

Isang tipikal na file ng serbisyo ng ssh.service ay ibinigay sa ibaba.

Paano Gumawa ng File ng Serbisyo

Upang lumikha ng isang serbisyo ng systemd, kinakailangan upang maunawaan ang mga pangunahing direktiba. Sa gabay na ito, sasakupin ko ang mahahalagang direktiba na makakatulong sa iyo na lumikha ng isang fully functional na file ng serbisyo.

Ang paggawa ng file ng serbisyo ay nagsasangkot ng maraming hakbang, magsimula tayo sa paggawa ng script file.

Tandaan: Upang magpatuloy sa pamamaraang binanggit sa ibaba, dapat ay mayroon kang mga pribilehiyo sa ugat.

1. Paggawa ng Iskrip

Ang paunang hakbang ay nagsasangkot ng paglikha ng code na isasagawa kapag sinimulan ng serbisyo ang operasyon nito. Para sa tutorial na ito, gumagawa ako ng bash script na mag-iimbak ng uptime ng Linux system at paggamit ng memory.

Gumawa tayo ng script sa kasalukuyang direktoryo na may pangalan ng myscript.sh gamit ang nano editor.

sudo nano myscript.sh

Ngayon, idagdag ang script na ibinigay sa ibaba sa file at i-save ito sa pamamagitan ng pagpindot ctrl+x at pagkatapos at .

#!/bin/bash

echo '>>Narito ang Uptime ng iyong System<<' > bahay / kanyang sarili / myfile.txt

uptime >> bahay / kanyang sarili / myfile.txt

echo '>>Narito ang Memory Usage ng iyong System<<' >> / bahay / kanyang sarili / myfile.txt

libre -m >> bahay / kanyang sarili / myfile.txt

matulog 60

Ang script ay naglalaman ng ilang echo string at uptime at libre mga utos.

Ang uptime Ang command sa Linux ay ginagamit upang i-print kung gaano katagal tumatakbo ang isang system, at kung gaano karaming mga user ang konektado sa isang average na pag-load ng system na nakalipas na 1, 5, at 15 minuto.

Ang libre Ang command ay ginagamit upang i-print ang paggamit ng memorya ng system, habang ang -m flag ay ginagamit upang i-print ang output sa Mga MB .

Upang mag-save ng impormasyon sa isang text file, gumagamit kami ng mga espesyal na operator na tinatawag na mga operator ng pag-redirect. Ang > operator ay ginagamit upang magpasok ng teksto sa nabanggit na text file. Gayunpaman, kung ang file ay wala na, ito ay malilikha. Habang ang >> operator ay ginagamit upang idagdag ang teksto sa file. Ang matulog Ang command ay ginagamit upang mapanatili ang aktibidad ng serbisyo para sa isang minimum na tagal ng isang minuto.

Ngayon, gawing executable ang script sa pamamagitan ng pagbibigay ng mga kinakailangang pahintulot.

sudo chmod +x myscript.sh

Ang script ay mayroon na ngayong pahintulot sa pagpapatupad, magpatuloy tayo sa susunod na seksyon.

Tandaan: Upang gawing walang error ang file ng serbisyo, gamitin ang absolute path ng file sa bash script.

2. Paglikha ng .service File

Susunod, lumikha ng isang file ng serbisyo gamit ang .serbisyo extension. Ang file ng serbisyo ay dapat gawin sa /etc/systemd/system direktoryo. Una, mag-navigate sa direktoryo na ito gamit ang cd utos.

cd / atbp / sistemad / sistema

Maaari kang lumikha ng file ng serbisyo sa anumang direktoryo, at sa ibang pagkakataon ay ilipat ang file na iyon sa direktoryo na ito, gayunpaman.

Gumagawa ako ng isang file ng serbisyo na may myservice.service pangalan.

sudo nano myservice.service

Ngayon, idagdag ang mga sumusunod na linya sa file.

[ Yunit ]

Paglalarawan = Aking Serbisyo

[ Serbisyo ]

Uri =simple

ExecStart = / bin / bash / bahay / kanyang sarili / script.sh

I-restart = on-failure

[ I-install ]

WantedBy =multi-user.target

Tandaan na [Yunit], [Serbisyo], at [I-install] ay case-sensitive . Ang file ng serbisyo ay hindi gagana kung alinman sa mga ito ay nabanggit nang hindi tama, gaya ng [UNIT], o [SERVICE].

Ang pangalan ng serbisyo ay tinukoy bilang Aking Serbisyo nasa Paglalarawan direktiba ng [Yunit] seksyon.

Ang Uri ng serbisyo ay simple lang nasa [Serbisyo] seksyon, na siyang default na uri. Forking , one-shot , ipaalam , dbus , at idle ang ilan sa iba pang mga uri.

Kung gusto mong gawing partikular sa gumagamit ang serbisyo, ang Gumagamit Ang direktiba ay maaari ding gamitin sa username ng user. Ang paggamit ng direktiba na ito ay gagawing umaasa ang pahintulot ng gumagamit ng serbisyo.

Habang ang ExecStart Ang direktiba ay naglalaman ng buong landas ng maipapatupad. Sa halimbawa sa itaas, ang script file myscript.sh ay nakaimbak sa /home/sam/ direktoryo. Ang direktiba na ito sa katunayan ay namamahala kung ano ang isasagawa kapag ang isang serbisyo ay hinihimok ng systemd. Kung hindi tinukoy ang buong path ng command, awtomatiko itong malulutas upang ayusin ang mga absolute path gaya ng /usr/local/bin , /usr/bin/, at /bin . Tamang-tama na gamitin ang executable na pangalan hangga't sila ay nasa karaniwang mga direktoryo ng command, gayunpaman, banggitin ang ganap na landas kung hindi man. Tandaan na ang Maramihang mga utos ay maaari ding gamitin na pinaghihiwalay ng semicolon (;).

Ang [I-install] opsyonal ang seksyon; gayunpaman, ipinapahiwatig nito kung paano pinagana ang serbisyo. Ang WantedBy Kinukuha ng direktiba ang mga run-level na target na file bilang mga parameter. Ang iba't ibang mga target na file ay nagpahiwatig ng iba't ibang mga run-level ng system tulad ng patayin , iligtas , multi-user , graphical , at i-reboot .

Ang multi-user.target nangangahulugan na ang serbisyo ay paganahin kapag ang system ay nasa isang estado upang payagan ang mga multi-user na hindi graphical na mga session.

3. Pag-activate ng Serbisyo

Upang i-activate ang serbisyo, una, i-reload ang systemd configuration na ginagamit systemctl kagamitan.

sudo systemctl daemon-reload

Susunod, buhayin muli ang serbisyo gamit systemctl utos na may paganahin .

sudo systemctl paganahin myservice.service

Upang i-verify, suriin ang katayuan ng serbisyo gamit ang katayuan ng systemctl utos.

Ang serbisyo ay matagumpay na tumatakbo.

Ngayon, basahin natin ang text file myfile.txt ang serbisyong nilikha sa /bahay direktoryo.

Paano Gumawa ng Systemd Service File para sa Normal na User

Ang pamamaraan ng paglikha ng file ng serbisyo para sa isang normal na gumagamit ay katulad ng paraan ng paglikha ng isang file ng serbisyo ng administrator. Gayunpaman, ang direktoryo upang i-save ang file ng serbisyo para sa mga normal na gumagamit ay iba. Dapat ilagay ng mga normal na user ang kanilang mga file ng serbisyo sa ~/.config/systemd/user . Ang direktoryo na ito ay dapat gawin gamit ang mkdir utos.

mkdir ~ / .config / sistemad / gumagamit

Upang i-activate ang serbisyo ng isang normal na user –gumagamit utos ay ipinasok na may systemctl sa halip na sudo .

systemctl --gumagamit daemon-reload

systemctl --gumagamit paganahin SERVICE-NAME.service

systemctl --gumagamit katayuan SERVICE-NAME.service

Ang –gumagamit ang opsyon ay ginagamit upang pamahalaan ang mga systemd service file ng user.

Paano Alisin ang File ng Serbisyo

Upang alisin ang file ng serbisyo, una, ang serbisyo ay kailangang ihinto.

sudo systemctl ihinto ang SERVICE-NAME.service

Suriin ang katayuan gamit katayuan ng systemctl utos upang malaman kung ang serbisyo ay huminto o hindi. Pagkatapos ay alisin ang file ng serbisyo gamit ang rm utos.

sudo rm / atbp / sistemad / sistema / SERVICE-NAME.service

Ngayon, i-reload ang sistemad pagsasaayos.

sudo systemctl daemon-reload

Konklusyon

Ang pasadyang serbisyo ng systemd ay kapaki-pakinabang sa iba't ibang mga sitwasyon. Sa gabay na ito, natutunan namin kung paano gumawa ng custom systemd service file para sa isang system administrator at kung paano makakagawa ang mga normal na user ng service file. Higit pa rito, nakikita rin namin ang pamamaraan ng pag-alis ng file ng serbisyo.