GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengelola Layanan Systemd dengan Systemctl di Linux

Systemd proses standar untuk mengelola layanan start-up di sistem operasi Linux. Ini digunakan untuk mengontrol program mana yang berjalan ketika sistem Linux boot. Ini adalah manajer sistem dan telah menjadi standar baru untuk sistem operasi Linux. Systemd memungkinkan Anda membuat layanan systemd khusus untuk menjalankan dan mengelola proses apa pun. Dalam tutorial ini, kami akan menjelaskan cara mengelola layanan dengan systemd di Linux.

Prasyarat

  • Server yang menjalankan Linux dengan Systemd, saya akan menggunakan server Ubuntu 20.04 di sini.
  • Sandi root dikonfigurasi untuk server.

Verifikasi Systemd

Secara default, Systemd sudah diinstal sebelumnya di semua sistem operasi utama. Anda dapat memverifikasi versi Systemd yang diinstal dengan perintah berikut:

systemctl --version

Anda akan melihat output berikut:

systemd 245 (245.4-4ubuntu3)
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid

Anda dapat menemukan lokasi Systemd dengan perintah berikut:

whereis systemd

Anda akan mendapatkan output berikut:

systemd: /usr/bin/systemd /usr/lib/systemd /etc/systemd /usr/share/systemd /usr/share/man/man1/systemd.1.gz

Untuk menemukan lokasi systemctl, jalankan perintah berikut:

whereis systemctl

Anda akan mendapatkan output berikut:

systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz

Anda juga dapat memverifikasi apakah Systemd berjalan atau tidak dengan perintah berikut:

ps -eaf | grep systemd

Anda akan mendapatkan output berikut:

root         269       1  0 09:57 ?        00:00:01 /lib/systemd/systemd-journald
root         294       1  0 09:57 ?        00:00:00 /lib/systemd/systemd-udevd
systemd+     297       1  0 09:57 ?        00:00:00 /lib/systemd/systemd-networkd
message+     319       1  0 09:57 ?        00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root         329       1  0 09:57 ?        00:00:00 /lib/systemd/systemd-logind
systemd+     382       1  0 09:57 ?        00:00:00 /lib/systemd/systemd-resolved
root        1128       1  0 10:47 ?        00:00:00 /lib/systemd/systemd --user
root        1177    1152  0 10:48 pts/0    00:00:00 grep --color=auto systemd

Anda juga dapat menganalisis waktu yang dibutuhkan oleh setiap proses saat boot sistem dengan perintah berikut:

systemd-analyze blame

Anda akan mendapatkan output berikut:

3.662s csm.service                         
1.899s apt-daily-upgrade.service           
1.798s dev-sda1.device                     
1.400s systemd-logind.service              
1.336s fstrim.service                      
1.207s systemd-networkd.service            
1.131s systemd-resolved.service            
 856ms man-db.service                      
 842ms systemd-journald.service            
 415ms e2scrub_reap.service                
 320ms keyboard-setup.service              
 295ms networkd-dispatcher.service         
 239ms systemd-udev-trigger.service 

Untuk menganalisis rantai kritis saat boot dengan perintah berikut:

systemd-analyze critical-chain

Anda akan mendapatkan output berikut:

The time when unit became active or started is printed after the "@" character.
The time the unit took to start is printed after the "+" character.

graphical.target @4.948s
??multi-user.target @4.946s
  ??csm.service @1.282s +3.662s
    ??basic.target @1.277s
      ??sockets.target @1.276s
        ??dbus.socket @1.274s
          ??sysinit.target @1.257s
            ??systemd-update-utmp.service @1.247s +8ms
              ??systemd-tmpfiles-setup.service @1.228s +17ms
                ??systemd-journal-flush.service @1.201s +24ms
                  ??systemd-journald.service @356ms +842ms
                    ??systemd-journald.socket @313ms
                      ??system.slice @225ms
                        ??-.slice @225ms

Kelola Layanan dengan Systemd

Systemctl menyediakan cara yang lebih mudah untuk mengelola layanan systemd.

Untuk memulai layanan Apache, jalankan perintah berikut:

systemctl start apache2

Untuk memulai ulang layanan Apache, jalankan perintah berikut:

systemctl restart apache2

Untuk menghentikan layanan Apache, jalankan perintah berikut:

systemctl stop apache2

Untuk memuat ulang layanan Apache, jalankan perintah berikut:

systemctl reload apache2

Untuk mengaktifkan layanan Apache untuk memulai setelah sistem reboot, jalankan perintah berikut:

systemctl enable apache2

Untuk menghapus layanan Apache dari sistem start up, jalankan perintah berikut:

systemctl disable apache2

Untuk mematikan layanan Apache, jalankan perintah berikut:

systemctl kill apache2

Untuk menutupi layanan Apache, jalankan perintah berikut:

systemctl mask apache2

Untuk membuka kedok proses Apache, jalankan perintah berikut:

systemctl unmask apache2

Untuk memeriksa apakah layanan Apache diaktifkan atau tidak, jalankan perintah berikut:

systemctl is-enabled apache2

Untuk memeriksa status layanan Apache, jalankan perintah berikut:

systemctl status apache2

Jika layanan sedang berjalan, Anda akan mendapatkan output berikut:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2021-01-09 10:53:12 UTC; 26s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 1708 (apache2)
      Tasks: 55 (limit: 2353)
     Memory: 5.8M
     CGroup: /system.slice/apache2.service
             ??1708 /usr/sbin/apache2 -k start
             ??1709 /usr/sbin/apache2 -k start
             ??1710 /usr/sbin/apache2 -k start

Jan 09 10:53:12 ubuntu2004 systemd[1]: Starting The Apache HTTP Server...

Setelah mengganti nama atau menghapus file systemd, Anda harus memuat ulang untuk menerapkan perubahan. Untuk memuat ulang file layanan systemd, jalankan perintah berikut:

systemctl daemon-reload

Kelola File Unit Systemd

Perintah di atas akan berguna untuk mengelola layanan tunggal. Namun, itu tidak dapat digunakan untuk menemukan keadaan sistem saat ini. Ada banyak perintah lain yang berguna untuk memberikan informasi ini.

Untuk melihat daftar semua unit yang tersedia, jalankan perintah berikut:

systemctl list-unit-files

Anda akan melihat daftar semua file unit pada output berikut:

UNIT FILE                              STATE           VENDOR PRESET
proc-sys-fs-binfmt_misc.automount      static          enabled      
-.mount                                generated       enabled      
dev-hugepages.mount                    static          enabled      
dev-mqueue.mount                       static          enabled      
proc-sys-fs-binfmt_misc.mount          disabled        enabled      
sys-fs-fuse-connections.mount          static          enabled      
sys-kernel-config.mount                static          enabled      
sys-kernel-debug.mount                 static          enabled      
sys-kernel-tracing.mount               static          enabled      
acpid.path                             enabled         enabled      
ntp-systemd-netif.path                 enabled         enabled      
systemd-ask-password-console.path      static          enabled      
systemd-ask-password-wall.path         static          enabled      
session-2.scope                        transient       enabled      
acpid.service                          disabled        enabled      
apt-daily-upgrade.service              static          enabled      
apt-daily.service                      static          enabled      
[email protected]                        enabled         enabled      
console-getty.service                  disabled        disabled     
console-setup.service                  enabled         enabled      
[email protected]               static          enabled      
cron.service                           enabled         enabled      
cryptdisks-early.service               masked          enabled      
cryptdisks.service                     masked          enabled      
csm.service                            enabled         enabled      
dbus-org.freedesktop.hostname1.service static          enabled      
dbus-org.freedesktop.locale1.service   static          enabled      

Untuk melihat daftar semua unit yang aktif, jalankan perintah berikut:

systemctl list-units

Anda akan melihat output berikut:

  UNIT                                                                                        LOAD   ACTIVE SUB       DESCRIPTION             >
  proc-sys-fs-binfmt_misc.automount                                                           loaded active waiting   Arbitrary Executable Fil>
  sys-devices-pci0000:00-0000:00:03.0-virtio0-net-eth0.device                                 loaded active plugged   Virtio network device   >
  sys-devices-pci0000:00-0000:00:04.0-virtio1-net-eth1.device                                 loaded active plugged   Virtio network device   >
  sys-devices-pci0000:00-0000:00:05.0-virtio2-host2-target2:0:0-2:0:0:0-block-sda-sda1.device loaded active plugged   QEMU_HARDDISK 1         >
  sys-devices-pci0000:00-0000:00:05.0-virtio2-host2-target2:0:0-2:0:0:0-block-sda.device      loaded active plugged   QEMU_HARDDISK           >
  sys-devices-platform-serial8250-tty-ttyS1.device                                            loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS10.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS11.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS12.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS13.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS14.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS15.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS16.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS17.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS18.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS19.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS2.device                                            loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS20.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS21.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS22.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS23.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS24.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS25.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS26.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS27.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS28.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS29.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS3.device                                            loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS30.device                                           loaded active plugged   /sys/devices/platform/se>
  sys-devices-platform-serial8250-tty-ttyS31.device                                           loaded active plugged   /sys/devices/platform/se>

Untuk melihat daftar semua unit yang gagal, jalankan perintah berikut:

systemctl --failed

Untuk membuat daftar semua layanan termasuk layanan yang diaktifkan dan dinonaktifkan, jalankan perintah berikut:

systemctl list-unit-files --type=service

Anda akan melihat output berikut:

UNIT FILE                              STATE           VENDOR PRESET
acpid.service                          disabled        enabled      
apache-htcacheclean.service            disabled        enabled      
[email protected]           disabled        enabled      
apache2.service                        enabled         enabled      
[email protected]                       disabled        enabled      
apt-daily-upgrade.service              static          enabled      
apt-daily.service                      static          enabled      
[email protected]                        enabled         enabled      
console-getty.service                  disabled        disabled     
console-setup.service                  enabled         enabled      
[email protected]               static          enabled      
cron.service                           enabled         enabled      
cryptdisks-early.service               masked          enabled      
cryptdisks.service                     masked          enabled      
csm.service                            enabled         enabled      
dbus-org.freedesktop.hostname1.service static          enabled      
dbus-org.freedesktop.locale1.service   static          enabled      
dbus-org.freedesktop.login1.service    static          enabled      
dbus-org.freedesktop.resolve1.service  enabled         enabled      
dbus-org.freedesktop.timedate1.service static          enabled      
dbus-org.freedesktop.timesync1.service masked          enabled      
dbus.service                           static          enabled      
debug-shell.service                    disabled        disabled     
dmesg.service                          enabled         enabled      
[email protected]                       static          enabled      
e2scrub_all.service                    static          enabled      
[email protected]                  static          enabled      
e2scrub_reap.service                   enabled         enabled      
emergency.service                      static          enabled      
fstrim.service                         static          enabled      
getty-static.service                   static          enabled      
[email protected]                         enabled         enabled      

Anda dapat melihat properti unit SSH, jalankan perintah berikut:

systemctl show sshd.service

Anda akan melihat output berikut:

Id=sshd.service
Names=sshd.service
Requires=basic.target
Wants=system.slice
WantedBy=multi-user.target
Conflicts=shutdown.target
Before=shutdown.target multi-user.target
After=syslog.target network.target auditd.service systemd-journald.socket basic.target system.slice
Description=OpenSSH server daemon

Kelola Soket dengan Systemctl

Anda juga dapat mengelola soket menggunakan perintah Systemctl.

Untuk membuat daftar semua soket sistem yang tersedia, jalankan perintah berikut:

systemctl list-unit-files --type=socket

Anda akan melihat output berikut:

UNIT FILE                        STATE    VENDOR PRESET
acpid.socket                     enabled  enabled      
dbus.socket                      static   enabled      
ssh.socket                       disabled enabled      
syslog.socket                    static   disabled     
systemd-fsckd.socket             static   enabled      
systemd-initctl.socket           static   enabled      
systemd-journald-audit.socket    static   enabled      
systemd-journald-dev-log.socket  static   enabled      
[email protected] static   enabled      
systemd-journald.socket          static   enabled      
[email protected]         static   enabled      
systemd-networkd.socket          disabled enabled      
systemd-rfkill.socket            static   enabled      
systemd-udevd-control.socket     static   enabled      
systemd-udevd-kernel.socket      static   enabled      

Untuk memulai soket SSH, jalankan perintah berikut:

systemctl start ssh.socket

Untuk menghentikan soket SSH, jalankan perintah berikut:

systemctl stop ssh.socket

Untuk memulai ulang soket SSH, jalankan perintah berikut:

systemctl restart ssh.socket

Untuk memeriksa status soket SSH, jalankan perintah berikut:

systemctl status ssh.socket

Untuk mengaktifkan dan menonaktifkan soket SSH saat boot, jalankan perintah berikut:

systemctl enable ssh.socket
systemctl disable ssh.socket

Perintah Tambahan Systemctl

Anda dapat melakukan beberapa tugas menggunakan perintah systemctl. Jika Anda ingin menempatkan sistem ke mode single-user, jalankan perintah berikut:

systemctl rescue

Untuk menghentikan sistem, jalankan perintah berikut:

systemctl halt

Untuk mematikan sistem, jalankan perintah berikut:

systemctl poweroff

Untuk memulai ulang sistem, jalankan perintah berikut:

systemctl reboot

Kesimpulan

Dalam panduan di atas, Anda mempelajari cara mengelola dan mengontrol layanan systemd di Linux. Saya harap ini akan membantu Anda berinteraksi dengan dan mengontrol instance systemd Anda. Jangan ragu untuk bertanya kepada saya jika Anda memiliki pertanyaan.


Linux
  1. Cara Mengelola dan Mendaftar Layanan di Linux

  2. Bagaimana mengelola Layanan Linux dengan perintah systemctl

  3. Cara Mendaftar Layanan Systemd di Linux

  1. Kelola beberapa instance layanan dengan systemctl

  2. Cara Menggunakan Perintah Systemctl untuk Mengelola Layanan Systemd

  3. Linux – Bagaimana Mendapatkan Lebih Sedikit Ttys Dengan Systemd?

  1. Bagaimana mengelola unit systemd saat start-up

  2. Cara membuat layanan Systemd di Linux

  3. Gunakan Systemctl untuk mengelola layanan