Linux හි systemctl භාවිතා කර සේවා ලැයිස්තුගත කිරීම සහ කළමනාකරණය කිරීමේ ක්‍රමය: ආරම්භකයින් සඳහා සම්පූර්ණ මාර්ගෝපදේශය

目次

1. Introduction

Linux භාවිතා කරන විට, සේවා තත්ත්වය පරීක්ෂා කිරීම හෝ සියලු ධාවන ක්‍රියාවලීන් ලැයිස්තුගත කිරීම වැනි අවස්ථා බොහෝ වේ. එවැනි අවස්ථා වල systemctl විධානය ඉතා ප්‍රයෝජනවත් වේ.

මෙම විධානය “systemd” සමඟ අන්තර්ක්‍රියා කරයි—Linux හි ආරම්භක පද්ධතිය සහ සේවා කළමනාකරු, සේවා (unit) තත්ත්වය පරීක්ෂා කිරීම, ආරම්භ කිරීම, නවත්වීම, නැවත ආරම්භ කිරීම, සහ සේවා ලැයිස්තුගත කිරීම වැනි විවිධ විශේෂාංග ලබා දේ.

විශේෂයෙන් “systemctl සමඟ ලැයිස්තුගත කිරීම” ගැන කතා කරන විට, ඔබට පද්ධතියේ ව්‍යුහය විවිධ කෝණවලින් අවබෝධ කරගත හැක—දැනට ක්‍රියාත්මක සේවා පමණක් නොව, අක්‍රිය සේවා හෝ ස්වයංක්‍රීයව ආරම්භ වීමට සකස් කර ඇති සේවාද.

මෙම කොටස “systemctl” යනු කුමක්ද යන්න සරලව සාරාංශ කරයි, සහ ඔබ මෙම ලිපියෙන් ඉගෙන ගන්නා දේ පැහැදිලි කරයි.

systemctl යනු කුමක්ද?

systemctl යනු systemd-අධාරිත Linux බෙදාහැරීම් වල සේවා, ඉලක්ක (targets), සහ මවුන්ට් ස්ථාන වැනි “unit” විවිධයන් පාලනය කිරීම සහ පරීක්ෂා කිරීම සඳහා ප්‍රමිතියක් වන මෙවලමයි.

උදාහරණයක් ලෙස, Apache (httpd) හෝ SSH සේවා ආරම්භ කිරීම හෝ නවත්වීම, හෝ ඒ සේවා들의 තත්ත්වය ලැයිස්තුගත කිරීම සඳහා ඔබ එය භාවිතා කරයි.

systemd සහ systemctl අතර සම්බන්ධතාවය

systemd යනු Linux හි බූට් ක්‍රියාවලීන් සහ සේවා කළමනාකරණය සඳහා මූලික පද්ධතිය වන අතර, පරණ මෙවලම් වන SysVinit සහ Upstart වෙනුවට භාවිතා වේ. systemctl යනු systemd සමඟ සෘජුව අන්තර්ක්‍රියා කරන කමාන්ඩ්-ලයින් උපකරණයයි.

අනෙක් වචනයෙන් කියනවා නම්, systemd “පාලකයා” නම්, systemctl “කාර්යය සාධකයා” ලෙස උපදෙස් යවයි.

ඔබ මෙම ලිපියෙන් ඉගෙන ගන්නා දේ

මෙම ලිපිය පහත සාමාන්‍ය ප්‍රශ්නවලට පිළිතුරු දේ:

  • දැනට ධාවන වන සියලු සේවා කෙසේ ලැයිස්තුගත කරගත හැකිද?
  • අක්‍රිය සේවා ලැයිස්තුවට ඇතුළත් කරගැනීමට කෙසේද?
  • ස්වයංක්‍රීයව ආරම්භ වීමට සකස් කර ඇති සේවා කෙසේ පරීක්ෂා කරගත හැකිද?
  • ප්‍රතිඵල කියවීම සහ විශ්ලේෂණය කිරීම කෙසේද?

සෑම විධානයේ උදාහරණයක් සහ එහි ප්‍රතිඵලයද ආරම්භකයන් සඳහා විස්තරාත්මකව පැහැදිලි කර ඇත, එබැවින් අවසානය දක්වා අනුගමනය කිරීමට නිදහස් වන්න.

2. How to List Services with systemctl

Linux පද්ධති පරිපාලනයේ, සේවා ලැයිස්තුව ඉක්මනින් අවබෝධ කර ගැනීම අත්‍යවශ්‍ය වේ. systemctl විධානය භාවිතා කර, දැනට ක්‍රියාත්මක සේවා පමණක් නොව, අක්‍රිය සේවා සහ ස්වයංක්‍රීය ආරම්භය සඳහා සකස් කර ඇති සේවාද පහසුවෙන් දැකගත හැක.

මෙහිදී, සේවා ලැයිස්තුගත කිරීමේ තුන් ප්‍රධාන කෝණයන් පැහැදිලි කරමු:

  • ක්‍රියාත්මක සේවා ලැයිස්තුව
  • සියලු සේවා ලැයිස්තුව (අක්‍රිය සේවා ඇතුළත්)
  • සේවා unit ගොනු ලැයිස්තුව (ආරම්භ සැකසුම් ඇතුළත්)

2.1 Listing Currently Active Services

ඔබේ පද්ධතියේ “ධාවන” සේවා කුමනවාදැයි පරීක්ෂා කිරීමට, මෙම මූලික විධානය භාවිතා කරන්න:

systemctl list-units --type=service

මෙම විධානය දැනට ක්‍රියාත්මක (running) සේවා ලැයිස්තුවක් පෙන්වයි. ප්‍රතිඵලය පහත තීරුවලින් සමන්විත වේ:

ColumnDescription
UNITName of the service (e.g., ssh.service)
LOADWhether the unit file is loaded
ACTIVEService status (e.g., active, inactive, failed)
SUBDetailed status (e.g., running, exited, dead)
DESCRIPTIONBrief description of the service

මෙම තොරතුරු, උදාහරණයක් ලෙස nginx දැනට ධාවන වෙයිද, හෝ කුමන සේවා ක්‍රියාත්මක වෙයිද යන දේ ඔබට අවබෝධ කරගැනීමට උපකාරී වේ.

2.2 Listing All Services, Including Inactive Ones

පෙරනිමියෙන්, list-units දැනට ක්‍රියාත්මක සේවා පමණක් පෙන්වයි. අක්‍රිය සේවා ඇතුළත් කිරීමට --all විකල්පය එක් කරන්න:

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

මෙම විකල්පය, “අක්‍රිය” තත්ත්වයේ සේවා හෝ තවදුරටත් ආරම්භ කර නොමැති සේවාද දැකගත හැක.

ප්‍රතිඵලය තවත් සීමා කිරීමට, --state= විකල්පය භාවිතා කර විශේෂ තත්ත්වයක් අනුව පෙරහන් (filter) කළ හැක:

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

උදාහරණයක් ලෙස, නවත්වන ලද (stopped) සේවා පමණක් පරීක්ෂා කිරීමට මෙය ප්‍රයෝජනවත් වේ.

2.3 Listing Service Unit Files

වත්මන් තත්ත්වය පමණක් නොව, කුමන සේවා සක්‍රිය (enabled) කර ඇති අතර ස්වයංක්‍රීය ආරම්භය සඳහා සකස් කර ඇතිද යන්න දැන ගැනීමට පහත විධානය භාවිතා කරන්න:

systemctl list-unit-files --type=service

මෙය සේවා unit ගොනු (වින්‍යාස ගොනු) ලැයිස්තුවක් පෙන්වයි, සහ ඒවායේ සක්‍රිය/අක්‍රිය තත්ත්වය (enabled, disabled, ආදිය) පරීක්ෂා කිරීමට ඉඩ සලසයි.

STATE ValueDescription
enabledAutomatically enabled at boot
disabledNot enabled at boot; must be started manually
staticStarted as a dependency of other units; cannot be enabled/disabled directly
maskedExplicitly disabled and cannot be started (protected)

මෙම ලැයිස්තුව සමාලෝචනය කිරීමෙන්, බූට් වෙලාවේ කුමන සේවා ආරම්භ වනවාද, හෝ අහඹු ලෙස මැස්ක් (masked) කර ඇති සේවා තිබේද යන්න දෘශ්‍යමයව අවබෝධ කරගත හැක.

3. Basic Service Management with systemctl

The systemctl විධානය සේවා තත්ත්වය පරීක්ෂා කිරීම පමණක් නොව, සේවා ආරම්භ කිරීම, නවත්වීම, නැවත ආරම්භ කිරීම, සහ සක්‍රිය කිරීම හෝ අක්‍රිය කිරීමද සිදු කරයි. මෙන්න ලිනක්ස් පද්ධති කළමනාකරණයේ නිතර භාවිතා වන මූලික මෙහෙයුම්.

මෙම විධාන පාලනය කිරීම දිනපතා සේවාදායක කළමනාකරණය සහ ගැටළු විසඳීම සඳහා අත්‍යවශ්‍ය වේ.

3.1 Starting a Service

සේවාවක් ආරම්භ කිරීම

විශේෂිත සේවාවක් අතින් ආරම්භ කිරීමට, start උපවිධානය භාවිතා කරන්න:

sudo systemctl start [service name]

උදාහරණයක් ලෙස, Apache (httpd) ආරම්භ කිරීම:

sudo systemctl start httpd.service

මෙය සේවාව වහාම ආරම්භ කරයි. ඔබට එය පද්ධතිය නැවත ආරම්භ කිරීමෙන් පසුද පවත්වා ගැනීමට අවශ්‍ය නම්, enable භාවිතා කරන්න (පහත විස්තර කර ඇත).

3.2 Stopping a Service

සේවාව නවත්වීම

සේවාවක් නවත්වීමට, මෙම විධානය භාවිතා කරන්න:

sudo systemctl stop [service name]

උදාහරණය:

sudo systemctl stop sshd.service

සේවාව නැවත ඔබ විසින් පැහැදිලිව ආරම්භ කරන තුරු නවත්වා ඇත.

3.3 Restarting a Service

සේවාව නැවත ආරම්භ කිරීම

සේවාව නැවත ආරම්භ කිරීමට (උදාහරණයක් ලෙස, සැකසුම් වෙනස්කම් පසු), භාවිතා කරන්න:

sudo systemctl restart [service name]

උදාහරණය:

sudo systemctl restart nginx.service

නැවත ආරම්භ කිරීම සෑම විටම සේවාව නවත්වා පසු ආරම්භ කරයි, එහි වත්මන් තත්ත්වය කුමක් වුවත්.

3.4 Checking Service Status

සේවා තත්ත්වය පරීක්ෂා කිරීම

විස්තරාත්මක සේවා තත්ත්වය පරීක්ෂා කිරීමට, status උපවිධානය භාවිතා කරන්න:

systemctl status [service name]

උදාහරණය:

systemctl status mysql.service

මෙය වත්මන් ක්‍රියාකාරී තත්ත්වය, ක්‍රියාවලී හැඳුනුම් (PID), ලොග් සාරාංශය සහ තවත් තොරතුරු පෙන්වයි—ගැටළු විසඳීමට ඉතා ප්‍රයෝජනවත්.

3.5 Enabling a Service to Start Automatically

සේවාව ස්වයංක්‍රීයව ආරම්භ වීමට සක්‍රිය කිරීම

සේාව පද්ධතිය ආරම්භ වන විට ස්වයංක්‍රීයව ආරම්භ වීමට, enable උපවිධානය භාවිතා කරන්න:

sudo systemctl enable [service name]

උදාහරණය:

sudo systemctl enable docker.service

දැන්, සේවාව ඊළඟ පද්ධති ආරම්භයේ ස්වයංක්‍රීයව ආරම්භ වේ.

3.6 Disabling a Service from Starting Automatically

සේවාව ස්වයංක්‍රීය ආරම්භය අක්‍රිය කිරීම

ස්වයංක්‍රීය ආරම්භය අක්‍රිය කිරීමට, disable විධානය භාවිතා කරන්න:

sudo systemctl disable [service name]

උදාහරණය:

sudo systemctl disable cups.service

මෙය සේවාව පද්ධති ආරම්භයේ ආරම්භ වීමෙන් වැළකී සිටී.

3.7 Checking If a Service is Enabled

සේවාව සක්‍රියදැයි පරීක්ෂා කිරීම

සේවාව සක්‍රියද (ස්වයංක්‍රීය ආරම්භ වේ) කියා පරීක්ෂා කිරීමට, is-enabled භාවිතා කරන්න:

systemctl is-enabled [service name]

උදාහරණ ප්‍රතිඵලය:

enabled

මෙය ඔබට සේවාවේ ආරම්භ ප්‍රතිපත්තිය ඉක්මනින් පෙන්වයි.

4. Useful Options and Advanced Techniques for systemctl

systemctl විධානය මූලික ආරම්භ/නවත්වීමේ මෙහෙයුම් පමණක් නොව, උසස් කළමනාකරණ කාර්යයන්ටද සහය දක්වයි. ඔබ දැනගත යුතු පහසු විකල්ප සහ තාක්ෂණ කිහිපයක් මෙන්න.

මෙම විශේෂතා භාවිතා කිරීම ඔබේ ලිනක්ස් සේවා කළමනාකරණ කාර්යක්ෂමතාවය විශාල ලෙස වැඩිදියුණු කරයි.

4.1 Listing Service Dependencies

සේවා පරායෝගිකතා ලැයිස්තුගත කිරීම

ලිනක්ස් හි, සමහර සේවා අනෙකුත් ඒකක (සේවා, මවුන්ට්, ටාර්ගට් ආදිය) මත පරායෝගික වේ. පරායෝගිකතා පරීක්ෂා කිරීමට, list-dependencies භාවිතා කරන්න:

systemctl list-dependencies [service name]

උදාහරණය:

systemctl list-dependencies nginx.service

මෙම විධානය සම්බන්ධිත ඒකක ගසක් ආකාරයෙන් පෙන්වයි—ආරම්භ ක්‍රමය සහ අසෘජු පරායෝගිකතා විශ්ලේෂණයට ප්‍රයෝජනවත්.

4.2 Viewing Unit File Contents

ඒකක ගොනුවේ අන්තර්ගතය බැලීම

ඔබට ඒකකයේ සැකසුම් විස්තර පරීක්ෂා කිරීමට අවශ්‍ය නම්, සැබෑ ඒකක ගොනුව පෙන්විය හැක:

systemctl cat [service name]

උදාහරණය:

systemctl cat ssh.service

මෙය ගොනුවේ මාර්ගය සහ අන්තර්ගතය පෙන්වයි, ඔබට ඉක්මනින් අභිරුචි සැකසුම් දැකගත හැක.

4.3 Reloading Unit Files

ඒකක ගොනු නැවත පූරණය කිරීම

ඔබ අතින් ඒකක ගොනුවක් වෙනස් කරන්නේ නම්, වෙනස්කම් යෙදීමට daemon-reload භාවිතා කරන්න:

sudo systemctl daemon-reexec

හෝ, සාමාන්‍යයෙන්:

sudo systemctl daemon-reload

මෙය systemd හි ඒකක ගොනු නැවත පූරණය කරයි, එවිට වෙනස්කම් ක්‍රියාත්මක වේ. සැකසුම් යෙදෙන්නේ නැති නම්, පළමුව මෙම විධානය පරීක්ෂා කරන්න.

4.4 Checking Service Logs (Supplement)

සේවා ලොග් පරීක්ෂා කිරීම (අතිරේක)

systemctl විධානය නොවූවත්, journalctl සේවාොග් පරීක්ෂා කිරීමට ප්‍රයෝජනවත් වේ:

journalctl -u [service name]

උදාහරණය:

journalctl -u docker.service

මෙය ඔබට ආරම්භ දෝෂ සහ නැවත ආරම්භ ඉතිහාසය සමාලෝචනය කිරීමට ඉඩ දේ—ගැටළු විසඳීමේ අත්‍යවශ්‍ය පියවරක්.

5. Common Problems and Solutions

පොදු ගැටළු සහ විසඳුම්

When managing services with systemctl, things don’t always go as expected. This section explains common issues and how to resolve them.

Be prepared for “service won’t start” or “can’t find the cause” by knowing these basic troubleshooting steps.

5.1 සේවාව ආරම්භ නොවන විට ගැටළු විසඳීම

You may see errors like:

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

To identify the cause, check the following steps in order:

  1. තත්ත්වය පරීක්ෂා කරන්න
    systemctl status [service name]
    
  1. දෝෂ ලොග් පරීක්ෂා කරන්න
    journalctl -xe
    
  1. ඒකක ගොනු නැවත පූරණය කරන්න If you just edited a unit file, reload with:
    sudo systemctl daemon-reload
    
  1. පෝට් ගැටුම් පරීක්ෂා කරන්න See if another process is already using the port:
    sudo netstat -tulnp | grep [port number]
    

5.2 status විධානයේ දෝෂ පණිවුඩ කියවීම කෙසේද

When you run systemctl status, you see the service’s state as well as the most recent log messages. For example:

● 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)

This lets you quickly spot failures (e.g., “Active: failed”, “status=1/FAILURE”) and which process returned an error.

The Loaded line shows the unit file’s path, making it easy to identify the configuration file to edit.

5.3 සේවා අනපේක්ෂිතව නවත්වන විට

If a service starts but then stops immediately, common causes include:

  • වින්‍යාස ගොනු වල දෝෂ
  • පෝට් ගැටුම්
  • අවශ්‍ය ගොනු හෝ නාමාවලියන් අස්ථානගත වීම
  • ප්‍රවේශ අවසර නොපැහැදිලිවීම

To resolve, try the following:

  • වින්‍යාස ගොනු පරීක්ෂා කර සත්‍යාපනය කරන්න (උදා: nginx -t හෝ apachectl configtest)
  • විස්තරාත්මක ලොග් journalctl -u [service name] මඟින් අනුගමනය කරන්න
  • අවශ්‍ය නාමාවලියන් (උදා: /var/run/xxx) පවතින බව තහවුරු කරන්න; අවශ්‍ය නම් සාදන්න

5.4 masked තත්ත්වයේ සේවා ආරම්භ කළ නොහැකි වීම

If you see this error:

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

The service is in the masked state (completely disabled and blocked from starting). Unmask with:

sudo systemctl unmask [service name]

Then you can start the service as usual.

6. සාරාංශය

Service management in Linux is an essential part of daily system operations. The systemctl command plays a central role, enabling you to check lists of services and manage them efficiently.

This article has explained the following points using the “systemctl list” keyword:

systemctl විධානයෙන් ඔබට කළ හැකි දේ (සමාලෝචනය)

  • සේවා ලැයිස්තුව පරීක්ෂා කරන්න
  • වත්මන් ක්‍රියාත්මක සේවා පෙන්වන්න ( list-units --type=service )
  • අක්‍රිය සේවා ඇතුළත් සියලු සේවා ලැයිස්තුගත කරන්න ( --all හෝ --state= විකල්ප)
  • සේවා ඒකක ගොනු සහ ඒවායේ ආරම්භ තත්ත්වය පෙන්වන්න ( list-unit-files )
  • මූලික සේවා මෙහෙයුම්
  • ආරම්භ, නවත්වන්න, නැවත ආරම්භ, තත්ත්වය පරීක්ෂා (start / stop / restart / status)
  • ස්වයංක්‍රීය ආරම්භ සක්‍රිය/අක්‍රිය කිරීම (enable / disable / is-enabled)
  • උසස් මෙහෙයුම් සහ ගැටළු විසඳීම
  • නිර্ভරතා පරීක්ෂා කිරීම, ඒකක ගොනු බැලීම, වින්‍යාස නැවත පූරණය කිරීම
  • ලොග් සහ තත්ත්ව පරීක්ෂණ මඟින් දෝෂ විමර්ශනය

සේවා කළමනාකරණය සඳහා හොඳ පුරුදු

  • වෙනස්කම් කිරීමට පෙර සෑමවිටම තත්ත්වය පරීක්ෂා කරන්න (status විධානය)
  • ස්වයං ආරම්භ තත්ත්වය දැනගන්න (is-enabled විධානය)
  • වෙනස්කම් කිරීමෙන් පසු, සෑමවිටම daemon-reload ක්‍රියාත්මක කරන්න
  • ගැටළු සඳහා, journalctl මඟින් ලොග් පරීක්ෂා කරන්න

These meticulous checks ensure stable service delivery and faster troubleshooting in Linux system administration.

තවත් ඉගෙනීමට

If you’d like to learn more, consider exploring topics such as:

  • systemd ඉලක්ක (runlevels වලින් වෙනස්කම්)
  • systemd-timer සමඟ නියමිත කාර්යයන්
  • අභිරුචි ඒකක ගොනු නිර්මාණය සහ කළමනාකරණය කිරීම

7. නිතර අසන ප්‍රශ්න (FAQ)

මෙම කොටස systemctl විධානය සහ සේවා ලැයිස්තුගත කිරීම පිළිබඳ නිතර අසන ප්‍රශ්න සහ පිළිතුරු සාරාංශ කරයි. මූලික කරුණු ඔබට හොඳින් තේරෙනවා නම්ත්, ඉක්මන් යොමු කිරීම සඳහා මෙය නැවත බලන්න.

Q1. systemctl සහ service විධාන අතර වෙනස කුමක්ද?

A1.
systemctl යනු systemd-අධාරිත සේවා කළමනාකරණ විධානය වන අතර, නවීන Linux බෙදාහැරීම් (Ubuntu, CentOS, Fedora, ආදිය) සඳහා ප්‍රමිතිය වේ.
එයට විරුද්ධව, service යනු පැරණි SysVinit පද්ධතියෙන් ආවේ. සමහරවිට අනුකූලතාවය සඳහා තවමත් රඳවා ඇතත්, systemd පරිසර සඳහා systemctl භාවිතා කිරීම නිර්දේශ කරයි.

Q2. list-units සහ list-unit-files අතර වෙනස කුමක්ද?

A2.

  • list-units දැනට ලෝඩ් කර ඇති ඒකක (ක්‍රියාත්මක හෝ පෙර භාවිතා කළ) පෙන්වයි.
  • list-unit-files සියලු ඒකක ගොනු සහ ඒවායේ සක්‍රිය/අක්‍රිය තත්ත්වය ලැයිස්තුගත කරයි. “දැන් ධාවනය වන දේ” සහ “ධාවනය කිරීමට සැකසූ දේ” අතර වෙනස ලෙස සිතන්න.

Q3. “static” තත්ත්වයේ සේවාවක් ආරම්භ කළ හැදැයි?

A3.
ඔව්, ඔබට static තත්ත්වයේ සේවාවක් අතින් start කළ හැක, නමුත් එය ස්වයංක්‍රීයව ආරම්භ වීමට enable කළ නොහැක. මෙය static සේවා අනෙකුත් ඒකක වල පරායන ලෙස ආරම්භ වීමට නිර්මාණය කර ඇති නිසාය.

Q4. මාස්ක කරන ලද සේවාවක් ආරම්භ කළ නොහැක. මොකද කළ යුතුද?

A4.
masked යනු “සම්පූර්ණයෙන් අක්‍රිය” බවයි. අමස්ක කිරීම සඳහා:

sudo systemctl unmask [service name]

ඊළඟට, ඔබට එය සාමාන්‍ය ලෙස ආරම්භ කළ හැක.

Q5. සේවා තත්ත්වය ලැයිස්තුගත කිරීම සඳහා GUI එකක් තිබේද?

A5.
ඔබගේ බෙදාහැරීම අනුව, gnome-system-monitor, KSysGuard හෝ Cockpit වැනි මෙවලම් GUI එකක් මගින් සේවා තත්ත්වය පරීක්ෂා කිරීමට ඉඩ දේ. නමුත්, උසස් මෙහෙයුම් සඳහා systemctl තවමත් විශ්වාසදායකම ක්‍රමය වේ.

Q6. අභිරුචි ඒකක ගොනු කොහේ තබා ගත යුතුද?

A6.
සාමාන්‍යයෙන්, ඒවා /etc/systemd/system/ තුළ තබා ගන්න. සංස්කරණය කිරීමෙන් පසු, මෙය ක්‍රියාත්මක කිරීම අමතක නොකරන්න:

sudo systemctl daemon-reload

ඊළඟට, සාමාන්‍ය ලෙස start හෝ enable භාවිතා කර කළමනාකරණය කරන්න.

侍エンジニア塾