Cara Menggunakan systemctl untuk Menyenaraikan dan Mengurus Perkhidmatan di Linux: Panduan Lengkap untuk Pemula

目次

1. Pengenalan

Apabila menggunakan Linux, terdapat banyak situasi di mana anda mungkin ingin memeriksa status perkhidmatan atau menyenaraikan semua proses yang sedang berjalan. Dalam kes tersebut, arahan systemctl sangat berguna.

Arahan ini berinteraksi dengan “systemd,” sistem inisialisasi dan pengurus perkhidmatan pada Linux, menyediakan pelbagai ciri seperti memeriksa status perkhidmatan (unit), memulakan, menghentikan, memulakan semula, dan menyenaraikan perkhidmatan.

Terutama apabila bercakap tentang “penyenaraian dengan systemctl,” anda dapat memahami struktur sistem anda dari pelbagai sudut—bukan hanya perkhidmatan yang sedang aktif, tetapi juga yang tidak aktif, atau perkhidmatan yang ditetapkan untuk mula secara automatik.

Bahagian ini akan secara ringkas menggariskan asas “systemctl,” dan menjelaskan apa yang akan anda pelajari dalam artikel ini.

Apa itu systemctl?

systemctl ialah alat standard untuk mengawal dan memeriksa pelbagai “unit” seperti perkhidmatan, target, dan titik pemasangan pada distribusi Linux berasaskan systemd.

Sebagai contoh, anda menggunakannya untuk memulakan atau menghentikan perkhidmatan seperti Apache (httpd) atau SSH, atau untuk menyenaraikan status perkhidmatan tersebut.

Hubungan Antara systemd dan systemctl

systemd ialah teras sistem untuk proses boot dan pengurusan perkhidmatan pada Linux, menggantikan alat lama seperti SysVinit dan Upstart. systemctl ialah utiliti baris perintah yang berinteraksi secara langsung dengan systemd.

Dengan kata lain, jika systemd adalah “pengawal,” maka systemctl berfungsi sebagai “operator” yang menghantar arahan.

Apa yang Anda Akan Pelajari dalam Artikel Ini

Artikel ini menjawab soalan-soalan umum berikut:

  • Bagaimana saya boleh menyenaraikan semua perkhidmatan yang sedang berjalan?
  • Bagaimana saya memasukkan perkhidmatan yang tidak aktif ke dalam senarai?
  • Bagaimana saya memeriksa perkhidmatan yang diaktifkan untuk mula secara automatik?
  • Bagaimana saya membaca dan mentafsirkan hasilnya?

Setiap contoh arahan dan outputnya dijelaskan dengan teliti untuk pemula, jadi sila ikuti sehingga akhir.

2. Cara Menyenaraikan Perkhidmatan dengan systemctl

Dalam pentadbiran sistem Linux, memahami senarai perkhidmatan dengan cepat adalah penting. Dengan arahan systemctl, anda boleh melihat bukan sahaja perkhidmatan yang sedang aktif tetapi juga yang tidak aktif dan yang dikonfigurasikan untuk mula secara automatik.

Di sini, kami akan menjelaskan tiga perspektif utama untuk menyenaraikan perkhidmatan:

  • Senarai perkhidmatan aktif
  • Senarai semua perkhidmatan (termasuk yang tidak aktif)
  • Senarai fail unit perkhidmatan (termasuk tetapan permulaan)

2.1 Menyenaraikan Perkhidmatan Aktif Semasa

Untuk memeriksa perkhidmatan yang “berjalan” pada sistem anda, gunakan arahan asas berikut:

systemctl list-units --type=service

Arahan ini memaparkan senarai perkhidmatan yang sedang aktif (berjalan). Outputnya termasuk lajur berikut:

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

Maklumat ini membantu anda memahami, contohnya, sama ada nginx sedang berjalan atau perkhidmatan apa yang aktif.

2.2 Menyenaraikan Semua Perkhidmatan, Termasuk yang Tidak Aktif

Secara lalai, list-units hanya menunjukkan perkhidmatan yang sedang aktif. Untuk memasukkan perkhidmatan yang tidak aktif, tambahkan pilihan --all:

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

Pilihan ini membolehkan anda melihat perkhidmatan dalam keadaan “tidak aktif” atau yang belum pernah dimulakan sebelum ini.

Jika anda ingin menapis keputusan lebih lanjut, gunakan pilihan --state= untuk menapis mengikut status tertentu:

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

Ini berguna apabila anda hanya ingin memeriksa perkhidmatan yang dihentikan, contohnya.

2.3 Menyenaraikan Fail Unit Perkhidmatan

Jika anda ingin mengetahui bukan sahaja status semasa tetapi juga perkhidmatan mana yang diaktifkan dan ditetapkan untuk mula secara automatik, gunakan arahan berikut:

systemctl list-unit-files --type=service

Arahan ini memaparkan senarai fail unit perkhidmatan (fail konfigurasi) dan membolehkan anda memeriksa status enable/disable mereka (enabled, disabled, dll.).

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)

Mengkaji senarai ini membantu anda secara visual memahami perkhidmatan mana yang mula semasa boot dan sama ada ada yang secara tidak sengaja dimask.

3. Pengurusan Perkhidmatan Asas dengan systemctl

The systemctl command not only checks service status but also lets you start, stop, restart, and enable or disable services. Here are the basic operations frequently used in Linux system management.

Mastering these commands is essential for daily server management and troubleshooting.

3.1 Memulakan Perkhidmatan

To start a specific service manually, use the start subcommand:

sudo systemctl start [service name]

For example, to start Apache (httpd):

sudo systemctl start httpd.service

This starts the service immediately. If you want it to persist after reboot, use enable as well (explained below).

3.2 Menghentikan Perkhidmatan

To stop a service, use this command:

sudo systemctl stop [service name]

Example:

sudo systemctl stop sshd.service

The service remains stopped until you explicitly start it again.

3.3 Memulakan Semula Perkhidmatan

To restart a service (for example, after configuration changes), use:

sudo systemctl restart [service name]

Example:

sudo systemctl restart nginx.service

Restart always stops and then starts the service, regardless of its current state.

3.4 Memeriksa Status Perkhidmatan

To check detailed service status, use the status subcommand:

systemctl status [service name]

Example:

systemctl status mysql.service

This shows the current active state, process ID (PID), log summary, and more—very helpful for troubleshooting.

3.5 Mengaktifkan Perkhidmatan untuk Dimulakan Secara Automatik

To ensure a service starts automatically at boot, use the enable subcommand:

sudo systemctl enable [service name]

Example:

sudo systemctl enable docker.service

Now, the service will launch automatically on the next system boot.

3.6 Menyahaktifkan Perkhidmatan daripada Dimulakan Secara Automatik

To disable auto-start, use the disable command:

sudo systemctl disable [service name]

Example:

sudo systemctl disable cups.service

This prevents the service from starting at boot.

3.7 Memeriksa Sama Ada Perkhidmatan Diaktifkan

To check whether a service is enabled (starts automatically), use is-enabled:

systemctl is-enabled [service name]

Example output:

enabled

This quickly tells you the service’s startup policy.

4. Pilihan Berguna dan Teknik Lanjutan untuk systemctl

The systemctl command supports not only basic start/stop operations, but also advanced management tasks. Here are some convenient options and techniques you should know.

Leveraging these features can greatly improve your Linux service management efficiency.

4.1 Menyenaraikan Kebergantungan Perkhidmatan

In Linux, some services depend on other units (services, mounts, targets, etc.). To check dependencies, use list-dependencies:

systemctl list-dependencies [service name]

Example:

systemctl list-dependencies nginx.service

This command shows related units in a tree format—helpful for analyzing startup order and indirect dependencies.

4.2 Melihat Kandungan Fail Unit

If you want to check the details of a unit’s configuration, you can display the actual unit file:

systemctl cat [service name]

Example:

systemctl cat ssh.service

This shows the file path and its contents, letting you quickly see any custom settings.

4.3 Memuat Semula Fail Unit

If you manually modify a unit file, use daemon-reload to apply changes:

sudo systemctl daemon-reexec

Or, more commonly:

sudo systemctl daemon-reload

This reloads unit files in systemd, so changes take effect. If settings don’t seem to apply, try this command first.

4.4 Memeriksa Log Perkhidmatan (Suplemen)

While not a systemctl command itself, journalctl is useful for checking service logs:

journalctl -u [service name]

Example:

journalctl -u docker.service

This lets you review startup errors and restart history—an essential troubleshooting step.

5. Masalah Biasa dan Penyelesaiannya

Apabila mengurus perkhidmatan dengan systemctl, perkara tidak selalu berjalan seperti yang dijangka. Bahagian ini menerangkan isu‑isu biasa dan cara menyelesaikannya.

Bersedia untuk “perkhidmatan tidak dapat dimulakan” atau “tidak dapat mencari punca” dengan mengetahui langkah‑langkah penyelesaian masalah asas ini.

5.1 Penyelesaian Masalah Apabila Perkhidmatan Tidak Dapat Dimulakan

Anda mungkin melihat ralat seperti:

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

Untuk mengenal pasti punca, semak langkah‑langkah berikut mengikut urutan:

  1. Semak status
    systemctl status [service name]
    
  1. Semak log ralat
    journalctl -xe
    
  1. Muat semula fail unit Jika anda baru sahaja mengedit fail unit, muat semula dengan:
    sudo systemctl daemon-reload
    
  1. Semak konflik port Lihat sama ada proses lain sudah menggunakan port tersebut:
    sudo netstat -tulnp | grep [port number]
    

5.2 Cara Membaca Mesej Ralat dalam Perintah status

Apabila anda menjalankan systemctl status, anda akan melihat keadaan perkhidmatan serta mesej log terkini. Contohnya:

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

Ini membolehkan anda dengan cepat mengesan kegagalan (contoh, “Active: failed”, “status=1/FAILURE”) dan proses mana yang mengembalikan ralat.

Baris Loaded menunjukkan laluan fail unit, memudahkan anda mengenal pasti fail konfigurasi yang perlu diedit.

5.3 Apabila Perkhidmatan Berhenti Secara Tidak Dijangka

Jika perkhidmatan dimulakan tetapi kemudian berhenti serta‑merta, punca biasa termasuk:

  • Ralat dalam fail konfigurasi
  • Konflik port
  • Kekurangan fail atau direktori yang diperlukan
  • Kebenaran pelaksanaan yang tidak mencukupi

Untuk menyelesaikannya, cuba langkah berikut:

  • Semak dan sahkan fail konfigurasi (contoh, nginx -t atau apachectl configtest)
  • Ikuti log terperinci dengan journalctl -u [service name]
  • Pastikan direktori yang diperlukan (contoh, /var/run/xxx) wujud; cipta jika diperlukan

5.4 Tidak Dapat Memulakan Perkhidmatan dalam Keadaan masked

Jika anda melihat ralat ini:

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

Perkhidmatan berada dalam keadaan masked (dinyahaktifkan sepenuhnya dan disekat daripada dimulakan). Nyahmask dengan:

sudo systemctl unmask [service name]

Kemudian anda boleh memulakan perkhidmatan seperti biasa.

6. Ringkasan

Pengurusan perkhidmatan dalam Linux merupakan bahagian penting dalam operasi sistem harian. Perintah systemctl memainkan peranan utama, membolehkan anda menyemak senarai perkhidmatan dan mengurusnya dengan cekap.

Artikel ini telah menerangkan perkara‑perkara berikut menggunakan kata kunci “systemctl list”:

Apa yang Boleh Anda Lakukan dengan Perintah systemctl (Ulasan)

  • Semak senarai perkhidmatan
  • Paparkan perkhidmatan yang sedang aktif ( list-units --type=service )
  • Senaraikan semua perkhidmatan termasuk yang tidak aktif ( pilihan --all atau --state= )
  • Tunjukkan fail unit perkhidmatan dan status permulaan mereka ( list-unit-files )
  • Operasi perkhidmatan asas
  • Mulakan, hentikan, mulakan semula, dan semak status (start / stop / restart / status)
  • Dayakan/nyahdayakan permulaan automatik (enable / disable / is-enabled)
  • Operasi lanjutan dan penyelesaian masalah
  • Semak kebergantungan, lihat fail unit, muat semula konfigurasi
  • Selidik ralat menggunakan log dan semakan status

Amalan Terbaik untuk Pengurusan Perkhidmatan

  • Sentiasa semak status sebelum membuat perubahan (perintah status)
  • Ketahui status auto‑mula (is-enabled command)
  • Selepas membuat perubahan, sentiasa jalankan daemon-reload
  • Untuk isu, semak log dengan journalctl

Pemeriksaan teliti seperti ini memastikan penyampaian perkhidmatan yang stabil dan penyelesaian masalah yang lebih cepat dalam pentadbiran sistem Linux.

Untuk Pembelajaran Lanjutan

Jika anda ingin belajar lebih lanjut, pertimbangkan untuk menerokai topik seperti:

  • Sasaran systemd (dan perbezaan daripada tahap jalan)
  • Tugas dijadualkan dengan systemd-timer
  • Cara mencipta dan mengurus fail unit tersuai

7. Soalan-soalan Lazim Ditanya (FAQ)

Bahagian ini merangkumkan soalan-soalan lazim ditanya dan jawapan tentang arahan systemctl dan senarai perkhidmatan. Walaupun anda selesa dengan asas-asas, semak ini untuk rujukan pantas.

Q1. Apakah perbezaan antara arahan systemctl dan service?

A1.
systemctl adalah arahan pengurusan perkhidmatan berasaskan systemd, dan merupakan standard untuk kebanyakan pengagihan Linux moden (Ubuntu, CentOS, Fedora, dll.).
Sebaliknya, service adalah daripada sistem SysVinit yang lebih lama. Walaupun ia kadang-kadang dikekalkan untuk keserasian, systemctl disyorkan untuk persekitaran systemd.

Q2. Apakah perbezaan antara list-units dan list-unit-files?

A2.

  • list-units memaparkan unit yang dimuatkan pada masa ini (aktif atau digunakan sebelum ini) .
  • list-unit-files menyenaraikan semua fail unit dan status daya hidup/matikan mereka . Fikirkan ia sebagai perbezaan antara “apa yang sedang dijalankan sekarang” dan “apa yang dikonfigurasi untuk dijalankan.”

Q3. Bolehkah saya memulakan perkhidmatan dalam keadaan “static”?

A3.
Ya, anda boleh memulakan perkhidmatan secara manual dalam keadaan static, tetapi anda tidak boleh dayakan ia untuk dimulakan secara automatik. Ini kerana perkhidmatan statik direka untuk dimulakan sebagai pergantungan unit lain.

Q4. Saya tidak boleh memulakan perkhidmatan yang disekat. Apa yang perlu saya lakukan?

A4.
masked bermaksudkan “dilumpuhkan sepenuhnya.” Nyahsekat dengan:

sudo systemctl unmask [service name]

Selepas itu, anda boleh memulakannya secara normal.

Q5. Adakah GUI untuk menyenaraikan status perkhidmatan?

A5.
Bergantung pada pengagihan anda, alat seperti gnome-system-monitor, KSysGuard, atau Cockpit mungkin membolehkan anda menyemak status perkhidmatan melalui GUI. Walau bagaimanapun, untuk operasi lanjutan, systemctl kekal sebagai kaedah yang paling boleh dipercayai.

Q6. Di mana saya patut letakkan fail unit tersuai?

A6.
Biasanya, letakkan ia di /etc/systemd/system/. Selepas mengedit, jangan lupa jalankan:

sudo systemctl daemon-reload

Kemudian urus seperti biasa dengan start atau enable.