GNU/Linux >> Belajar Linux >  >> Linux

SystemD - Untuk apa SystemD digunakan?

SystemD adalah alat manajemen sistem yang digunakan untuk merampingkan tugas administrasi sistem dan meningkatkan efisiensi. Manfaat utamanya terletak pada kemampuannya untuk meningkatkan kinerja dan daya tanggap sistem, serta meningkatkan keamanan dengan memindai kerentanan secara otomatis dan menambalnya.

Selain itu, SystemD dapat membantu mengatur sumber daya sistem secara lebih efektif, memungkinkan program berjalan lebih cepat dan lancar. Secara keseluruhan, jika Anda mencari alat manajemen sistem yang efektif yang akan membantu Anda mendapatkan hasil maksimal dari sistem Anda, maka SystemD adalah solusi ideal. Dalam artikel ini, Anda akan mempelajari semua yang perlu Anda ketahui tentang SystemD.

Untuk apa SystemD digunakan?

SystemD adalah alat manajemen sistem yang dapat digunakan untuk berbagai tugas, mulai dari mengelola sumber daya dan proses sistem hingga mengoptimalkan kinerja sistem pada sistem Linux. Ini banyak digunakan di banyak industri yang berbeda, dari perawatan kesehatan hingga manufaktur, karena kemampuannya yang kuat dan fitur-fitur canggihnya.

Baik Anda menjalankan server besar atau workstation yang lebih kecil, SystemD menawarkan berbagai manfaat yang dapat membantu Anda meningkatkan efisiensi dan produktivitas sistem. Beberapa fitur utama termasuk prioritas proses, pencatatan peristiwa sistem, dan kontrol alokasi sumber daya sistem. Jadi, jika organisasi Anda mencari alat manajemen sistem andal yang dapat membantu meningkatkan efisiensi dan kinerja di semua sistem, maka SystemD pasti layak dipertimbangkan.

Mengapa orang tidak menyukai SystemD?

Sementara banyak pengguna menganggap SystemD sebagai alat manajemen sistem yang sangat berharga, ada beberapa yang tidak menyukainya karena berbagai alasan. Beberapa kritikus berpendapat bahwa ini terlalu rumit dan sulit digunakan, terutama bagi mereka yang tidak terbiasa dengan tugas-tugas administrasi sistem. Yang lain mengklaim bahwa hal itu dapat berdampak negatif pada kinerja sistem, yang menyebabkan waktu mulai lebih lambat dan peningkatan penggunaan sumber daya.

Terlepas dari kekhawatiran ini, bagaimanapun, SystemD tetap menjadi salah satu alat manajemen sistem yang paling banyak digunakan di pasaran saat ini dan kemungkinan akan terus demikian di masa depan. Jika Anda mencari alat manajemen sistem yang efisien yang dapat membantu meningkatkan produktivitas di seluruh sistem organisasi Anda, maka SystemD sangat layak untuk dipertimbangkan.

Mengapa SystemD kontroversial?

SystemD adalah alat manajemen sistem yang sangat kontroversial, sebagian besar karena perdebatan yang sedang berlangsung seputar efektivitas dan kegunaannya. Beberapa pengguna mengklaim bahwa itu dapat berdampak negatif pada kinerja sistem, sementara yang lain berpendapat bahwa itu menawarkan sejumlah manfaat penting, seperti peningkatan keamanan sistem dan alokasi sumber daya sistem yang lebih efisien.

Ada juga kekhawatiran tentang kompleksitas SystemD dan keramahan pengguna, dengan banyak pengguna mengutip kurva belajarnya yang curam dan antarmuka yang membingungkan sebagai poin kritik utama. Terlepas dari kekhawatiran ini, bagaimanapun, SystemD tetap menjadi salah satu alat manajemen sistem yang paling banyak digunakan di pasaran saat ini dan kemungkinan akan terus demikian di masa depan. Jika Anda mencari alat manajemen sistem yang kuat yang dapat membantu meningkatkan kinerja dan efisiensi sistem di semua sistem, maka SystemD mungkin merupakan solusi ideal untuk Anda.

Apa itu SystemD vs init?

SystemD dan init adalah alat manajemen sistem yang sering dibandingkan karena kesamaan fungsi dan fitur yang tumpang tindih. Meskipun kedua alat manajemen sistem dapat digunakan untuk berbagai tugas administrasi sistem, seperti prioritas proses, pencatatan peristiwa sistem, dan kontrol alokasi sumber daya sistem, ada beberapa perbedaan utama di antara keduanya.

Sementara init berfokus pada proses startup dan shutdown sistem, misalnya, SystemD menawarkan kemampuan manajemen sistem yang lebih luas. Selain itu, banyak pengguna menganggap SystemD lebih ramah pengguna dan intuitif daripada init, menjadikannya pilihan populer di kalangan administrator sistem dan profesional TI. Secara keseluruhan, jika Anda mencari solusi manajemen sistem yang efektif yang dapat membantu meningkatkan kinerja dan efisiensi sistem di semua sistem, maka SystemD mungkin merupakan pilihan ideal untuk Anda.

Haruskah saya menggunakan Grub atau SystemD?

Tidak ada jawaban pasti untuk pertanyaan ini, karena Grub dan SystemD memiliki kelebihan dan kekurangannya masing-masing. Di satu sisi, Grub adalah alat manajemen sistem ringan yang menawarkan fungsi sederhana dan efisien untuk memulai dan mematikan sistem.

Di sisi lain, SystemD menawarkan kemampuan dan fitur manajemen sistem yang lebih luas, menjadikannya alat manajemen sistem yang lebih kuat dan serbaguna. Pada akhirnya, apakah Anda memilih untuk menggunakan Grub atau SystemD akan bergantung pada kebutuhan dan preferensi spesifik Anda sebagai administrator sistem atau profesional TI. Namun, jika Anda mencari solusi manajemen sistem yang efisien yang dapat membantu meningkatkan kinerja dan efisiensi sistem di semua sistem, maka SystemD kemungkinan merupakan pilihan yang lebih baik.

Cara menggunakan SystemD

Selanjutnya, kami akan membahas beberapa cara di mana Anda dapat menggunakan SystemD pada sistem Linux. Ini hanya beberapa contoh yang bisa Anda coba sendiri. Perlu beberapa waktu untuk membiasakan diri dengan sintaks, tetapi setelah Anda menyelesaikannya, SystemD menjadi alat yang hebat.

SystemD - Init

Ini adalah proses pertama yang dimulai oleh kernel dan mendapatkan proses id 1 . Ini mengelola proses boot tugas-tugas seperti membuat soket, menyiapkan perangkat keras, memasang disk, dll.

SystemD bekerja dengan unit dari tipe yang berbeda. Di samping layanan itu sendiri, ada juga:

  • pengatur waktu
  • gunung
  • jaringan
  • soket
  • partisi
  • perangkat

Selanjutnya, Anda dapat mengelola proses lain dengan SystemD:

  • mulai
  • berhenti
  • mulai ulang
  • bunuh

File-Unit

Ada jalur berbeda untuk file unit yang ada:

Jalur Info
/usr/lib/systemd/system file SystemD yang telah ditentukan sebelumnya (jangan diubah)
/etc/systemd/system Lokasi untuk file unit khusus
/run/systemd/system Untuk file runtime yang relevan

Informasi penting tentang jalur: SystemD akan selalu memilih /etc/ daripada /usr/lib/ . Inilah sebabnya kami menempatkan file unit khusus di sana.

Anda dapat mengunjungi file unit layanan tertentu dengan mengunjungi path atau dengan perintah:

systemctl cat <service>
Code language: Bash (bash)

Misalnya, OpenVPN:

[email protected]:~$ systemctl cat openvpn
# /lib/systemd/system/openvpn.service
# This service is actually a systemd target,
# but we are using a service since targets cannot be reloaded.

[Unit]
Description=OpenVPN service
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
WorkingDirectory=/etc/openvpn

[Install]
WantedBy=multi-user.target
Code language: Bash (bash)

Seperti yang bisa kita lihat di file unit, tentukan jalur mana yang digunakan , file PID , dan opsi lainnya . Yang akan kita bahas lebih detail di bawah ini. Kita dapat melihat semua properti yang tersedia dengan opsi yang dapat ditentukan dalam file unit untuk layanan dengan menggunakan perintah:

systemctl show <service>
Code language: Bash (bash)

Sebagai contoh, di sini sekali lagi, adalah baris pertama dari output OpenVPN:

[email protected]:~$ systemctl show openvpn
Type=oneshot
Restart=no
NotifyAccess=none
RestartUSec=100ms
TimeoutStartUSec=infinity
TimeoutStopUSec=1min 30s
TimeoutAbortUSec=1min 30s
TimeoutStartFailureMode=terminate
TimeoutStopFailureMode=terminate
RuntimeMaxUSec=infinity
WatchdogUSec=0
WatchdogTimestamp=n/a
WatchdogTimestampMonotonic=0
RootDirectoryStartOnly=no
RemainAfterExit=yes
GuessMainPID=yes
MainPID=0
ControlPID=0
FileDescriptorStoreMax=0
NFileDescriptorStore=0
StatusErrno=0
Result=success
ReloadResult=success
CleanResult=success
UID=[not set]
GID=[not set]
NRestarts=0
OOMPolicy=stop
ExecMainStartTimestamp=Sat 2022-09-17 13:00:55 CEST
ExecMainStartTimestampMonotonic=9823235
ExecMainExitTimestamp=Sat 2022-09-17 13:00:55 CEST
ExecMainExitTimestampMonotonic=9824084
ExecMainPID=1164
ExecMainCode=1
ExecMainStatus=0v
Code language: Bash (bash)

Jika sekarang kita ingin mengedit file unit layanan, kita jalankan perintah:

systemctl edit – full <service>
Code language: Bash (bash)

Saat kita menjalankan perintah tanpa full pilihan, kita akan mendapatkan file kosong. Kami memiliki opsi untuk membuat salinan file sumber, yang dapat kami edit.

Sebagai contoh opsi yang memungkinkan, bayangkan kita ingin OpenVPN selalu berjalan. Bahkan ketika proses dihentikan atau dihentikan, kami ingin proses itu dimulai ulang dengan sendirinya.

Kami membuka editor dan menambahkan opsi spesifik:

# This service is actually a systemd target,
# but we are using a service since targets cannot be reloaded.

[Unit]
Description=OpenVPN service
After=network.target

[Service]
Restart=yes
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
WorkingDirectory=/etc/openvpn

[Install]
WantedBy=multi-user.target
Code language: Bash (bash)

Setelah ini, kita perlu memuat ulang file konfigurasi:

systemctl reload <service>
Code language: Bash (bash)

Dan terakhir, mulai ulang layanan:

systemctl restart <service>
Code language: Bash (bash)

Dengan perintah ini, SystemD akan mencoba memuat ulang layanan. Jika tidak berhasil, layanan akan dimulai ulang:

systemctl reload-or-restart <service>
Code language: HTML, XML (xml)

Dalam perintah di atas, kita belajar bagaimana mengontrol layanan secara manual. SystemD juga memungkinkan Anda untuk mengaktifkan atau menonaktifkan layanan secara permanen sehingga mereka mulai secara otomatis saat dibutuhkan atau tidak tersedia sama sekali. Tabel berikut akan menampilkan perintah yang tersedia:

Perintah Fungsi
aktifkan Mengaktifkan layanan
nonaktifkan Menonaktifkan layanan
diaktifkan Periksa apakah suatu layanan diaktifkan
aktifkan kembali menonaktifkan layanan lalu mengaktifkannya kembali
masker Jika Anda ingin menonaktifkan layanan sepenuhnya, sembunyikan dia - Hati-hati
buka kedok membuka kedok layanan

Contoh penggunaan:

systemctl enable <service>
Code language: Bash (bash)

Target

Ini adalah status berbeda di mana sistem dapat melakukan booting.

SystemD menambahkan konsep baru untuk run level yang terkenal. Namun, prinsip lama tetap dipertahankan. Hanya run level yang diberi nama, bukan angka:

Target Efek
halt.target Matikan sistem
matikan.target Mematikan sistem secara fisik (matikan)
penyelamatan.target Mode Pengguna Tunggal
multi-pengguna.target Mode multipengguna
graphical.target Mode multipengguna dengan antarmuka grafis
boot ulang.target Me-reboot sistem

Anda dapat beralih ke target lain dengan menggunakan perintah berikut:

systemctl isolate example.target
Code language: Bash (bash)

Mulai ulang sistem:

systemctl reboot
Code language: Bash (bash)

Membuat sistem tertidur lelap dan menjeda semua proses yang berjalan:

systemctl hybrid-sleep
Code language: Bash (bash)

Matikan sistem dengan pesan siaran ke semua pengguna yang masuk:

systemctl shutdown

Anda dapat mengubah ini dengan menggunakan parameter:

systemctl shutdown -r now
Code language: Bash (bash)

Ini akan mem-boot ulang sistem (-r) dan mem-bypass pesan siaran, dan mem-boot ulang secara langsung. Ada banyak parameter berbeda untuk menggunakan perintah ini. Anda dapat mencarinya di halaman manual.

Anda dapat menampilkan target saat ini sistem melakukan booting dengan perintah berikut:

systemctl get-default
Code language: Bash (bash)

Tambahan, Anda dapat memodifikasi target:

systemctl set-default example.target
Code language: Bash (bash)

Runlevel yang berbeda juga dapat dilihat di sini:

ls -la /usr/lib/systemd/system |grep runle*
Code language: Bash (bash)
[email protected]:~$ ls -la /usr/lib/systemd/system |grep runle*
lrwxrwxrwx  1 root root    15 Apr 18 22:12 runlevel0.target -> poweroff.target
lrwxrwxrwx  1 root root    13 Apr 18 22:12 runlevel1.target -> rescue.target
drwxr-xr-x  2 root root  4096 Jan 28  2022 runlevel1.target.wants
lrwxrwxrwx  1 root root    17 Apr 18 22:12 runlevel2.target -> multi-user.target
drwxr-xr-x  2 root root  4096 Jan 28  2022 runlevel2.target.wants
lrwxrwxrwx  1 root root    17 Apr 18 22:12 runlevel3.target -> multi-user.target
drwxr-xr-x  2 root root  4096 Jan 28  2022 runlevel3.target.wants
lrwxrwxrwx  1 root root    17 Apr 18 22:12 runlevel4.target -> multi-user.target
drwxr-xr-x  2 root root  4096 Jan 28  2022 runlevel4.target.wants
lrwxrwxrwx  1 root root    16 Apr 18 22:12 runlevel5.target -> graphical.target
drwxr-xr-x  2 root root  4096 Jan 28  2022 runlevel5.target.wants
lrwxrwxrwx  1 root root    13 Apr 18 22:12 runlevel6.target -> reboot.target
-rw-r--r –  1 root root   803 Apr 18 22:12 systemd-update-utmp-runlevel.service
Code language: plaintext (plaintext)

Grup Kontrol

SystemD mengatur Tugas dalam grup kontrol. Ini digunakan untuk kontrol sumber daya di Linux, dan ini memungkinkan sumber daya yang tersedia menjadi terbatas , diprioritaskan , dihitung, dan terisolasi .

Oleh karena itu, perintah berikut sangat berguna untuk menganalisis dan mengoptimalkan kinerja sistem:

systemd-analyze
Code language: Bash (bash)

Perintah ini dapat digunakan untuk menentukan kinerja boot.

[email protected]:~$ systemd-analyze
Startup finished in 12.712s (firmware) + 328ms (loader) + 8.240s (kernel) + 6.634s (userspace) = 27.916s 
graphical.target reached after 6.631s in userspace
Code language: plaintext (plaintext)

Seperti yang bisa kita lihat, kita mendapatkan rincian waktu berapa lama setiap tugas dimulai.

Dengan perintah tambahan blame kami mendapatkan daftar yang sangat rinci tentang berapa lama proses tunggal mana yang perlu dimulai:

systemd-analyze blame

Keluaran :

[email protected]:~$ systemd-analyze blame
5.573s NetworkManager-wait-online.service
3.244s plymouth-quit-wait.service
2.285s fwupd.service
 467ms logrotate.service
 392ms lm-sensors.service
 385ms accounts-daemon.service
 362ms snapd.service
 290ms systemd-resolved.service
 279ms networkd-dispatcher.service
 247ms networking.service
 213ms dev-nvme0n1p3.device
 182ms apparmor.service
 178ms ModemManager.service
 174ms systemd-journal-flush.service
 168ms udisks2.service
 161ms NetworkManager.service
 152ms com.system76.Scheduler.service
 128ms apport.service
 127ms e2scrub_reap.service
 116ms rsyslog.service
 115ms smartmontools.service
 114ms wpa_supplicant.service
 105ms [email protected]
 100ms gpu-manager.service
....
Code language: plaintext (plaintext)

Jika kita ingin melihat semua grup kontrol, kita dapat menggunakan:

systemd-cgls
Code language: Bash (bash)

atau

systemctl status
Code language: Bash (bash)

Kami akan mendapatkan output berbasis pohon dengan semua informasi yang diperlukan:

[email protected]:~$ systemd-cgls
Control group /:
-.slice
├─user.slice 
│ └─user-1000.slice 
│   ├─[email protected] 
│   │ ├─session.slice 
│   │ │ ├─dbus-broker.service 
│   │ │ │ ├─3119 /usr/bin/dbus-broker-launch – scope user
│   │ │ │ └─3120 dbus-broker – log 4 – controller 10 – machine-id 04d8535513777afc7bb291c362dd90a7 – max-bytes 100000000000000 – max-fds 25000000000000 – max-matches 50000000>
│   │ │ ├─xdg-document-portal.service 
│   │ │ │ ├─3761 /usr/libexec/xdg-document-portal
│   │ │ │ └─3773 fusermount3 -o rw,nosuid,nodev,fsname=portal,auto_unmount,subtype=portal – /run/user/1000/doc
│   │ │ ├─xdg-desktop-portal.service 
│   │ │ │ └─3753 /usr/libexec/xdg-desktop-portal
│   │ │ ├─pipewire-pulse.service 
│   │ │ │ └─3112 /usr/bin/pipewire-pulse
│   │ │ ├─wireplumber.service 
│   │ │ │ └─3111 /usr/bin/wireplumber
│   │ │ ├─plasma-xdg-desktop-portal-kde.service 
│   │ │ │ └─3861 /usr/lib/x86_64-linux-gnu/libexec/xdg-desktop-portal-kde
│   │ │ └─pipewire.service 
│   │ │   └─3106 /usr/bin/pipewire
│   │ ├─background.slice 
│   │ │ ├─plasma-kactivitymanagerd.service 
│   │ │ │ └─3546 /usr/lib/x86_64-linux-gnu/libexec/kactivitymanagerd
│   │ │ ├─plasma-kscreen.service 
│   │ │ │ └─3610 /usr/lib/x86_64-linux-gnu/libexec/kf5/kscreen_backend_launcher
│   │ │ ├─plasma-baloorunner.service 
│   │ │ │ └─5633 /usr/lib/x86_64-linux-gnu/libexec/baloorunner
│   │ │ ├─plasma-kglobalaccel.service 
│   │ │ │ └─3452 /usr/bin/kglobalaccel5
│   │ │ └─tracker-miner-fs-3.service 
│   │ │   └─3148 /usr/libexec/tracker-miner-fs-3
│   │ ├─app.slice 
│   │ │ ├─app-\\x2fusr\\x2fbin\\x2fkorgac-d27ecb9065d646918a10df1c4fa798fe.scope 
│   │ │ │ └─3599 /usr/bin/korgac -session 10dfe2702d000165869202400000083140007_1663442587_18526
│   │ │ ├─gvfs-goa-volume-monitor.service 
│   │ │ │ └─3171 /usr/libexec/gvfs-goa-volume-monitor
│   │ │ ├─app-dbus\\x2d:1.2\\x2dorg.gnome.OnlineAccounts.slice 
│   │ │ │ └─dbus-:[email protected] 
│   │ │ │   └─3174 /usr/libexec/goa-daemon
│   │ │ ├─xdg-permission-store.service 
│   │ │ │ └─3765 /usr/libexec/xdg-permission-store
│   │ │ ├─com.system76.SystemUpdater.Local.service 
Code language: plaintext (plaintext)

Dengan systemd-cgtop perintah, kami mendapatkan daftar semua grup kontrol yang diurutkan berdasarkan pemanfaatan sumber daya saat ini:

systemd-cgtop
Code language: Bash (bash)

Sekarang, mengapa ini penting bagi kita? Sekarang kita dapat menganalisis pemanfaatan sumber daya dari masing-masing proses dan, jika perlu, menyesuaikan prioritas proses atau mengubah batas sumber daya.

Halaman manual memberi kita banyak kemungkinan untuk mengelola ini:

man systemd.resource-control
Code language: Bash (bash)

Misalnya - jika kita ingin mengatur batas memori layanan tertentu, kita dapat menggunakan:

systemctl set property example.service MemoryLimit=1G
Code language: Bash (bash)

Logging - JurnalD

JournalD mencatat semua kejadian di RAM sistem. Ini akan dihapus dengan restart sistem.

Anda dapat menggunakan JournalD dengan perintah berikut:

journalctl
Code language: Bash (bash)

Kita dapat lebih menyempurnakan output dengan menambahkan filter, misalnya, dengan waktu tertentu:

journalctl – since yesterday
Code language: Bash (bash)

Kami dapat menyempurnakannya lebih jauh lagi dengan menentukan periode waktu yang tepat dari ke:

journalctl – since "date" – until "date"
Code language: Bash (bash)

Cara lain untuk memfilter adalah dengan mengikuti layanan tertentu:

journalctl -u example
Code language: Bash (bash)

Kami juga dapat mengikuti layanan dan filter tertentu hanya untuk yang ini:

journalctl -fu example
Code language: Bash (bash)

Kami juga dapat memfilter hanya untuk peristiwa kernel:

journalctl -k
Code language: Bash (bash)

Ringkasan

SystemD adalah penerus kuat daemon init System V klasik dan memberi admin banyak informasi dan alat berguna yang mempercepat pekerjaan dan alur kerja sehari-hari. Jika Anda ingin mempelajari lebih lanjut tentang topik Linux mendalam lainnya, pastikan untuk mengunjungi blog Max Wilke.

  • SystemD adalah alat manajemen sistem yang dapat digunakan untuk tugas-tugas seperti mengelola sumber daya sistem dan proses , mengoptimalkan kinerja sistem , dan meningkatkan keamanan .
  • SystemD menawarkan sejumlah manfaat yang dapat membantu organisasi meningkatkan efisiensi dan produktivitas , termasuk prioritas proses , pencatatan log peristiwa sistem , dan kontrol alokasi sumber daya .
  • Sementara SystemD banyak digunakan oleh banyak industri yang berbeda karena kemampuannya yang kuat, beberapa pengguna tidak menyukainya karena rumit atau sulit digunakan . Selain itu, beberapa kritikus berpendapat bahwa dapat berdampak negatif pada kinerja sistem .
  • Meskipun ada kekhawatiran ini, SystemD tetap menjadi salah satu alat manajemen sistem paling populer di pasaran saat ini.

Linux
  1. Apa Kepanjangan Dll?

  2. Linux – Bagaimana Cara Mengatur Afinitas Cpu Default Untuk Semua Daemon Di Systemd?

  3. Algoritma Hash Apa yang Digunakan Untuk Kata Sandi yang Disimpan Dalam Bayangan Di 11.10?

  1. Apt-cache Digunakan Untuk?

  2. Apa lokasi pemasangan konvensional untuk aplikasi di Linux?

  3. Untuk apa grup `bayangan` digunakan?

  1. Berapa jumlah ruang swap yang tepat untuk sistem Linux modern?

  2. menggunakan pengatur waktu systemd, bukan cron

  3. Untuk apa `/dev/console` digunakan?