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.