Buong Gabay sa Listahan ng systemctl: Pagsusuri at Pamamahala ng Linux Services

目次

1. Panimula

Kapag gumagamit ng Linux, maraming pagkakataon na nais mong suriin ang estado ng serbisyo o makita ang listahan ng mga prosesong tumatakbo. Sa mga pagkakataong iyan, napakakapaki-pakinabang ng systemctl command.

Tumutugon ang command na ito sa ‘systemd’, na ang boot system at service manager sa Linux, at may malawak na mga tampok kabilang ang pagsusuri ng estado ng mga serbisyo (units), pag-activate, pagtigil, pag-restart, at paglalahad ng listahan.

Lalo na mula sa pananaw ng ‘systemctl list’, hindi lamang ang mga aktibong serbisyo kundi pati ang mga hindi aktibo, mga awtomatikong magsisimula, at iba pa, maaari mong maunawaan ang buong istraktura mula sa iba’t ibang anggulo.

Sa kabanatang ito, una munang iaayon nang maikli ang “Ano ang systemctl?” at ipapaliwanag kung ano ang matututunan sa artikulong ito.

Ano ang systemctl?

Ang systemctl ay ang standard na tool sa systemd-based Linux distributions para sa pagkontrol at pagsusuri ng mga serbisyo, targets, mount points, at iba pang ‘units’.

Halimbawa, ginagamit ito para mag-activate o magtigil ng mga serbisyo tulad ng Apache (httpd) o SSH, o para ipakita ang kanilang mga estado sa listahan.

Ang Relasyon ng systemd at systemctl

Ang systemd ay ang sentral na mekanismo para sa boot process at service management sa Linux, na pumapalit sa mga dating system tulad ng ‘SysVinit’ o ‘Upstart’. Ang command-line tool para makipag-ugnayan sa systemd ay ang systemctl.

Ibig sabihin, kung ang systemd ay ang command center, ang systemctl ay parang ‘operator’ na nagbibigay ng mga utos.

Ang Maaari Mong Matutunan sa Artikulong Ito

Sa artikulong ito, makakakuha ka ng mga sagot sa mga ganitong tanong:

  • Paano suriin ang listahan ng mga serbisyong tumatakbo ngayon?
  • Paano ipakita ang listahan kabilang ang mga hindi aktibo na serbisyo?
  • Paano suriin kung awtomatikong magsisimula ang isang serbisyo?
  • Paano basahin ang mga resulta ng listahan?

Para sa mga baguhan sa Linux, ipapaliwanag namin nang detalyado at madaling maunawaan ang mga halimbawa ng command at kung paano basahin ang mga output, kaya mangyaring samahan kami hanggang dulo.

年収訴求

2. Paano Ipakita ang Listahan ng Mga Serbisyo Gamit ang systemctl

Sa pamamahala ng sistema ng Linux, napakahalaga na mabilis na maunawaan ang listahan ng mga serbisyo.systemctl Gamit ang command, hindi lamang ang mga aktibong serbisyo kundi pati na rin ang mga hindi aktibo, ang kalagayan ng awtomatikong pag-boot, at iba pa ay madaling mapapatunayan.

Dito, ipapaliwanag namin ang mga paraan ng pagpapakita ng listahan mula sa pangunahing tatlong pananaw:

  • Listahan ng mga aktibong serbisyo
  • Buong listahan ng mga serbisyo (kasama ang hindi aktibo)
  • Listahan ng mga file ng serbisyo unit (kasama ang mga setting ng pag-boot)

2.1 Ipakita ang Listahan ng Mga Kasalukuyang Aktibong Serbisyo

Una, bilang pinakamahalagang paraan, kung nais mong suriin ang mga “booted” na serbisyo sa kasalukuyang sistema, gumamit ng sumusunod na command.

systemctl list-units --type=service

Kapag pinatakbo ang command na ito, ipapakita ang listahan ng mga aktibong (=gumaganang) serbisyo. Ang output ay naglalaman ng mga sumusunod na item:

Pangalan ng ItemKahulugan
UNITPangalan ng serbisyo (hal.: ssh.service)
LOADKung na-load ang unit file
ACTIVEKung ang serbisyo ay epektibo (hal.: active, inactive, failed)
SUBMas detalyadong kalagayan (hal.: running, exited, dead)
DESCRIPTIONBuod ng serbisyo

Gamit ang impormasyong ito, posible mong malaman, halimbawa, “kung gumagana ang nginx ngayon” o “ano ang mga gumagana” na sitwasyon.

2.2 Ipakita ang Listahan Kasama ang Mga Hindi Aktibong Serbisyo

Sa standard list-units, mahalagang tandaan na ipapakita lamang ang mga aktibong serbisyo. Kung nais mong suriin kasama ang mga hindi aktibo, idagdag ang --all opsyon.

systemctl list-units --type=service --all

Sa pamamagitan ng pagdaragdag ng opsyong ito, mapapakita rin ang mga serbisyo sa “inactive” na estado o mga hindi pa kailanman na-boot.

Kung nais mong higit na i-filter, gumamit ng --state= opsyon upang kunin lamang ang partikular na estado.

systemctl list-units --type=service --state=inactive

Sa ganitong paraan, malulutas din ang mga pangangailangan tulad ng “suriin lamang ang mga huminto na serbisyo” nang malaya.

2.3 Suriin ang Listahan ng Mga File ng Serbisyo Unit

Hindi lamang “ano ang kasalukuyang estado” kundi kung “alin ang mga epektibong serbisyo at awtomatikong gagana sa boot”, gumamit ng sumusunod na command.

systemctl list-unit-files --type=service

Ang command na ito ay nagpapakita ng listahan ng mga unit file ng serbisyo (impormasyon sa setting), at maaari mong suriin ang bawat estado ng epektibo/hindi epektibo (enabled/disabled atbp.).

Mga Halaga ng STATEKahulugan
enabledAwtomatikong epektibo sa boot
disabledHindi epektibo sa boot, kailangan ng manual na pag-boot
staticGumagana batay sa iba pang unit, hindi maaaring i-set ang epektibo/hindi epektibo sa sarili
maskedHayagang hindi epektibo, hindi maaaring i-boot (pinoprotektahan)

Sa pamamagitan ng pagsusuri sa listahang ito, maaari mong visual na maunawaan ang buong konstitusyon ng boot ng sistema, tulad ng “alins ang mga serbisyo na magsisimula sa boot” o “may serbisyo bang hindi sinasadyang na-mask”.

3. Mga Karaniwang Operasyon sa Pamamahala ng Serbisyo Gamit ang systemctl

Ang systemctl command ay hindi lamang nagpapatunay ng estado ng serbisyo, kundi sumusuporta rin sa maraming operasyon ng pamamahala tulad ng pag-activate, pag-stop, pag-restart, at pag-set ng enable/disable sa pag-boot. Sa bahaging ito, ipapakita namin ang mga karaniwang paraan ng operasyon na madalas gamitin sa operasyon ng Linux system.

Sa pang-araw-araw na pamamahala ng server at pagtugon sa problema, mahalaga na maging bihasa sa mga operasyong ito nang malaya.

3.1 Pag-activate ng Serbisyo

Upang manu-manong i-activate ang isang partikular na serbisyo, gumamit ng start subcommand tulad ng sumusunod.

sudo systemctl start pangalan_ng_servisyo

Halimbawa, kung nais mong i-activate ang Apache (httpd):

sudo systemctl start httpd.service

Ang command na ito ay agad na nag-a-activate ng serbisyo, ngunit kung nais mong mapanatili ito pagkatapos ng restart, kailangang gamitin ang enable na tatalakayin sa ibaba nang sabay.

3.2 Pag-stop ng Serbisyo

Upang ihinto ang serbisyo, gumamit ng sumusunod na command.

sudo systemctl stop pangalan_ng_servisyo

Halimbawa:

sudo systemctl stop sshd.service

Ang huminto na serbisyo ay hindi mag-ooperate hangga’t hindi ito eksplikong i-start muli.

3.3 Pag-restart ng Serbisyo

Kung nais mong i-restart ang serbisyo pagkatapos ng pagbabago ng setting, ang sumusunod na command ay maginhawa.

sudo systemctl restart pangalan_ng_servisyo

Halimbawa:

sudo systemctl restart nginx.service

Ang pag-restart ay isasagawa ang pag-stop muna at pag-activate muli, anuman ang kasalukuyang estado.

3.4 Pagsusuri ng Estado ng Serbisyo

Upang suriin ang detalyadong estado ng serbisyo, gumamit ng status subcommand.

systemctl status pangalan_ng_servisyo

Halimbawa:

systemctl status mysql.service

Sa command na ito, ipapakita ang kasalukuyang aktibong estado, proseso ID (PID), buod ng log, atbp., na partikular na kapaki-pakinabang sa pagtugon sa problema.

3.5 Pag-enable ng Awtomatikong Pag-activate ng Serbisyo

Kung nais mong awtomatikong i-enable ang serbisyo sa bawat restart, gumamit ng enable subcommand.

sudo systemctl enable pangalan_ng_servisyo

Halimbawa:

sudo systemctl enable docker.service

Sa pamamagitan ng setting na ito, awtomatikong magsisimula ang serbisyo sa susunod na pag-boot ng system.

3.6 Pag-disable ng Awtomatikong Pag-activate ng Serbisyo

Kung nais mong alisin ang awtomatikong pag-activate, gumamit ng disable command.

sudo systemctl disable pangalan_ng_servisyo

Halimbawa:

sudo systemctl disable cups.service

Sa ganitong paraan, hindi na magsisimula ang serbisyo sa pag-boot.

3.7 Pagsusuri ng Estado ng Setting ng Awtomatikong Pag-activate

Upang suriin kung ang serbisyo ay enabled o disabled sa kasalukuyan, gumamit ng is-enabled tulad ng sumusunod.

systemctl is-enabled pangalan_ng_servisyo

Halimbawa ng output:

enabled

Sa pamamagitan ng resulta na ito, mabilis na maunawaan ang patakaran ng pag-activate ng serbisyo.

4. Mga Kapaki-pakinabang na Opsyon at Mga Advanced na Teknik ng systemctl

Ang systemctl command ay hindi lamang para sa mga batayang operasyon tulad ng pagsisimula at pagpapatigil ng mga serbisyo, kundi pati na rin sa mas advanced at kapaki-pakinabang na mga gawain sa pamamahala. Sa bahaging ito, ipapakilala namin ang ilang bahagyang advanced na mga tampok at mga opsyon na kapaki-pakinabang na malaman.

Sa pamamagitan ng paggamit ng mga teknik na ito, maaari niyong mapahusay pa ang pamamahala ng mga serbisyo sa Linux.

4.1 Paglista ng Mga Relasyon sa Pag-depende ng Serbisyo

Sa Linux, madalas na may mga serbisyo na nakadepende sa ibang yunit (tulad ng serbisyo, mount, target, at iba pa). Upang suriin ang mga relasyon sa pag-depende na iyon, gamitin ang list-dependencies nang sumusunod:

systemctl list-dependencies pangalan_ng_serbisyo

Halimbawa:

systemctl list-dependencies nginx.service

Ang command na ito ay nagpapakita ng mga yunit na may kaugnayan sa tinukoy na serbisyo sa anyo ng hierarchical na istraktura. Kapaki-pakinabang ito sa pagsisiyasat ng pagkakasunod-sunod ng pag-sisimula o sa pagsusuri kung aling serbisyo ang maaapektuhan nang hindi direktang ng isang yunit.

4.2 Pagpapakita ng Nilalaman ng Unit File

Kung nais mong suriin ang detalyadong mga setting ng serbisyo, maaari mong tingnan nang direkta ang laman ng unit file (.service file).

systemctl cat pangalan_ng_serbisyo

Halimbawa:

systemctl cat ssh.service

Ang command na ito ay nagpapakita ng aktwal na path at nilalaman ng unit file na binasa. Mabilis na makikita kung may pagpapahusay ba ito at anong mga setting ang ginawa.

4.3 Pag-reload ng Unit File

Pagkatapos magdagdag ng manu-manong pagbabago sa unit file, upang i-reflect ito sa systemctl, i-execute ang daemon-reload.

sudo systemctl daemon-reexec

O, mas karaniwan:

sudo systemctl daemon-reload

Sa pamamagitan ng operasyon na ito, ang systemd ay muling binabasa ang unit file, at magiging epektibo ito sa mga susunod na operasyon. Kung binago mo ang config file pero hindi pa naaapektuhan, subukan muna ang command na ito.

4.4 Pagsusuri ng Log ng Pag-execute ng Unit (Karagdagang Tala)

Bagamat hindi mismo ang systemctl, ang journalctl command ay kapaki-pakinabang para sa pagsusuri ng log ng serbisyo na may kaugnayan.

journalctl -u pangalan_ng_serbisyo

Halimbawa:

journalctl -u docker.service

Dahil makikita ang mga error sa pag-sisimula ng serbisyo, history ng pag-restart, at iba pa, ito ay mahalagang command bilang unang hakbang sa pagtatrabaho ng mga problema.

5. Mga Karaniwang Problema at ang mga Paraan ng Paglutas Nito

Kapag ginagamit mo ang systemctl para pamahalaan ang mga serbisyo, maaaring hindi ito gumana ayon sa inaasahan, o magpakita ng mga mensahe ng error. Sa kabanatang ito, ipapaliwanag namin nang malinaw ang mga karaniwang problema at ang mga paraan ng paglutas nito.

Upang hindi mag-panic kapag nangyari ang mga sitwasyong tulad ng “hindi nag-uumpisa ang serbisyo” o “hindi matukoy ang sanhi kahit na sinuri ang estado”, ilalahad namin ang mga pangunahing punto na dapat tandaan.

5.1 Mga Punto ng Pagsusuri Kapag Hindi Nagsisimula ang Serbisyo

Maaaring lumabas ang mga sumusunod na error kahit sinusubukang paandarin ang serbisyo:

Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.

Sa ganitong mga kaso, mas madali matukoy ang sanhi kung susundin ang sumusunod na pagkakasunod-sunod:

  1. Pag-verify ng status
   systemctl status service_name
  1. Pag-verify ng error log
   journalctl -xe
  1. Muling pag-load ng unit file
    Kung kamakailan mo lang binago ang unit file, patakbuhin ang sumusunod upang i-reload.
   sudo systemctl daemon-reload
  1. Pag-verify ng port conflict
    Maaari mong tingnan kung may ibang proseso na gumagamit ng parehong port gamit ang sumusunod.
   sudo netstat -tulnp | grep port_number

5.2 status How to Read Error Messages

Kapag pinatakbo mo ang systemctl status, hindi lamang ipinapakita ang estado ng serbisyo kundi pati na rin ang huling log message na na-output. Halimbawa:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code) since Fri 2025-04-18 12:00:00 JST; 5s ago
  Process: 12345 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)

Sa ganitong paraan, kapag nakita mo ang mga tala tulad ng “Active: failed” o “status=1/FAILURE”, agad mong mauunawaan na nabigo ang serbisyo at aling proseso ang nagbalik ng error.

Bukod pa rito, mula sa linyang Loaded, makikita mo ang path ng unit file, kaya agad mong matutukoy kung aling file ang dapat baguhin.

5.3 When the Service Stops on Its Own

Kung ang serbisyo ay nagsisimula ngunit agad na humihinto, karaniwang sanhi nito ay ang mga sumusunod:

  • Maling pagsulat sa configuration file
  • Port conflict
  • Kakulangan ng kinakailangang mga file o direktoryo
  • Kulang na permission sa pag-execute

Sa mga ganitong kaso, epektibo ang mga sumusunod na hakbang:

  • I-verify muli ang configuration file at gamitin ang mga tool tulad ng nginx -t o apachectl configtest para sa pagsusuri
  • Subaybayan ang detalyadong log gamit ang journalctl -u service_name
  • Tiyaking umiiral ang kinakailangang mga direktoryo (hal., /var/run/xxx); kung wala, likhain ito

5.4 When Unable to Start in masked State

Kahit patakbuhin mo ang systemctl start, maaaring lumabas ang sumusunod na error:

Failed to start example.service: Unit example.service is masked.

Ito ay dahil ang serbisyo ay nasa masked state (ganap na hindi pinagana), kaya hinaharangan ang pag-start. Upang alisin ito, patakbuhin ang unmask tulad ng sumusunod.

sudo systemctl unmask service_name

Pagkatapos, maaari nang i-start gamit ang start.

6. Buod

Ang pamamahala ng serbisyo sa Linux ay isa sa mga hindi maiiwasang gawain sa pang-araw-araw na operasyon ng sistema. Ang sentral na papel nito ay ginagampanan ng systemctl command, na sa pamamagitan ng “pagpapakita ng listahan” o “pag-ooperate ng serbisyo” ay nagbibigay-daan sa pag-unawa at kontrol ng kalagayan ng buong sistema.

Sa artikulong ito, gamit ang “systemctl listahan” bilang keyword, inilarawan namin nang maayos ang mga sumusunod na punto:

Ang mga bagay na maaaring gawin ng systemctl command (Pagrepaso)

  • Pag-verify ng listahan ng mga serbisyo
  • Pagpapakita ng mga aktibong serbisyo ngayon (list-units --type=service)
  • Listahan na kinabibilangan ng hindi aktibo (--all o --state= opsyon)
  • Listahan ng mga service unit files at setting ng pag-boot (list-unit-files)
  • Mga basic na operasyon ng serbisyo
  • Pag-start, pag-stop, pag-restart, at pag-check ng status (start / stop / restart / status)
  • Setting ng auto-start (enable / disable / is-enabled)
  • Mga advanced na operasyon at pagtugon sa problema
  • Pag-verify ng dependencies, pagpapakita ng unit files, at pag-reload ng settings
  • Pagsisiyasat ng logs sa panahon ng error at pag-identify ng sanhi sa pamamagitan ng status check

Mga Best Practices sa Pamamahala ng Serbisyo

  • Mag-check muna ng status bago mag-operate (tiyaking tingnan ang status)
  • Alamin kung may auto-start (i-check gamit ang is-enabled)
  • After changing settings, laging i-execute ang daemon-reload
  • Sa panahon ng problema, i-check ang logs gamit ang journalctl

Sa operasyon ng Linux, ang pag-accumulate ng mga simpleng confirmation tasks na ito ay humahantong sa mas stable na pagbibigay ng serbisyo at mas mabilis na pagtugon sa mga problema.

Para sa Karagdagang Pag-aaral

Kung pagkatapos basahin ang artikulong ito ay nais mong “matuto ng higit pa nang malalim”, subukan mong mag-explore ng mga sumusunod na topic:

  • Mga target ng systemd (pagkakaiba sa runlevel)
  • Setting ng periodic execution gamit ang timer (systemd-timer)
  • Paglikha at paglalagay ng custom unit files

7. Mga Madalas na Tanong (FAQ)

Dito, pinagsama-sama ang mga karaniwang tanong at sagot mula sa mga mambabasa tungkol sa systemctl command at listahan ng mga serbisyo. Maging ang mga nakasanayan na sa mga basic na operasyon, gamitin ito bilang sanggunian para sa pagkukumpirma.

Q1. Ano ang pagkakaiba ng systemctl at service command?

A1.
Ang systemctl ay isang service management command na batay sa systemd, at ito ang standard sa maraming modernong Linux distributions (Ubuntu, CentOS, Fedora at iba pa).
Samantala, ang service ay isang command na ginamit sa lumang SysVinit system. Bagaman nananatili ito para sa compatibility, sa systemd environment, inirerekomenda ang paggamit ng systemctl.

Q2. Ano ang pagkakaiba ng list-units at list-unit-files?

A2.

  • Ang list-units ay nagpapakita ng mga yunit na kasalukuyang naka-load (= mga yunit na naka-start o ginamit sa nakaraan).
  • Ang list-unit-files ay naglilista ng lahat ng unit files at ang kanilang estado ng pag-activate (enabled / disabled at iba pa).
    Ibig sabihin, gamitin ang isa para sa “mga kasalukuyang gumagana” at ang isa para sa “paano ito naka-configure”.

Q3. Maaari bang i-start ang serbisyo na nasa static state?

A3.
Oo, ang serbisyo na nasa static state ay maaari ring i-start nang manu-mano gamit ang start. Gayunpaman, hindi ito maaaring i-enable para sa awtomatikong pagtakbo sa boot.
Ito ay dahil ang static services ay dinisenyo na umaasa sa iba pang units para mag-start.

Q4. Hindi ko ma-start ang serbisyo na masked. Paano?

A4.
Ang masked state ay “ganap na nai-disable” at ang pag-start mismo ay naka-block. Una, gumamit ng sumusunod na command para i-unmask:

sudo systemctl unmask pangalan-ng-serbisyo

Pagkatapos, maaari itong i-start gamit ang start.

Q5. May paraan ba para i-list ang estado ng serbisyo gamit ang GUI?

A5.
Sa ilang distributions, maaaring suriin ang estado ng serbisyo gamit ang GUI tools tulad ng gnome-system-monitor o KSysGuard, Cockpit at iba pa.
Gayunpaman, para sa advanced operations tulad ng pag-enable/disable ng serbisyo, ang pinakatiyak ay ang paggamit ng systemctl.

Q6. Gustong-gusto kong gumawa ng sariling unit file, saan ko ito ilalagay?

A6.
Karaniwang, ilagay ito sa /etc/systemd/system/. Pagkatapos ng editing, huwag kalimutang i-execute ang sumusunod:

sudo systemctl daemon-reload

Pagkatapos, maaari itong pamahalaan nang normal gamit ang start o enable.