systemd
yang buruk telah memiliki bagian dari pencela, tetapi tampaknya ada di sini untuk tinggal untuk admin Linux jadi kami mungkin juga terbiasa. systemd
handy yang praktis ini referensi perintah akan membantu Anda menjaga kewarasan Anda saat mencoba melakukan tugas administratif normal. Jadi, sampai kita mendapatkan sesuatu yang lebih bermanfaat, enak, dan diinginkan daripada systemd
, silakan nikmati daftar sepuluh perintah praktis ini untuk kenyamanan Anda. Perintah-perintah ini tidak dalam urutan kepentingan atau relevansi tertentu.
Mencantumkan file unit
Dari systemd
halaman manual:File unit adalah file gaya ini teks biasa yang mengkodekan informasi tentang layanan, soket, perangkat, titik mount, titik automount, file swap atau partisi, target start-up, file yang ditonton jalur sistem, pengatur waktu yang dikendalikan dan diawasi oleh systemd
, bagian pengelolaan sumber daya, atau sekelompok proses yang dibuat secara eksternal.
$ systemctl list-unit-files
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
dev-hugepages.mount static
dev-mqueue.mount static
proc-sys-fs-binfmt_misc.mount static
sys-fs-fuse-connections.mount static
sys-kernel-config.mount static
sys-kernel-debug.mount static
tmp.mount disabled
brandbot.path disabled
systemd-ask-password-console.path static
systemd-ask-password-plymouth.path static
systemd-ask-password-wall.path static
session-1.scope static
arp-ethers.service disabled
auditd.service enabled
autovt@.service enabled
<many more entries>
Tentu saja, Anda selalu dapat mengirim ke grep
untuk hanya melihat layanan yang diaktifkan.
$ systemctl list-unit-files |grep enabled
auditd.service enabled
autovt@.service enabled
crond.service enabled
dbus-org.fedoraproject.FirewallD1.service enabled
dbus-org.freedesktop.nm-dispatcher.service enabled
firewalld.service enabled
getty@.service enabled
irqbalance.service enabled
kdump.service enabled
lvm2-monitor.service enabled
<many more entries>
File unit ini, terletak di bawah /lib/systemd/system
, kira-kira setara dengan skrip init lama yang terletak di bawah /etc/rc.d/init.d
. Sebenarnya, jika Anda atau penginstalan perangkat lunak Anda membuat skrip init, systemd
. yang sesuai file unit dipetakan untuk Anda. Penjelasan lebih lanjut diberikan oleh /etc/rc.d/init.d/README
:
You are looking for the traditional init scripts in /etc/rc.d/init.d,
and they are gone?
Here's an explanation on what's going on:
You are running a systemd-based OS where traditional init scripts have
been replaced by native systemd services files. Service files provide
very similar functionality to init scripts. To make use of service
files simply invoke "systemctl", which will output a list of all
currently running services (and other units). Use "systemctl
list-unit-files" to get a listing of all known unit files, including
stopped, disabled and masked ones. Use "systemctl start
foobar.service" and "systemctl stop foobar.service" to start or stop a
service, respectively. For further details, please refer to
systemctl(1).
Note that traditional init scripts continue to function on a systemd
system. An init script /etc/rc.d/init.d/foobar is implicitly mapped
into a service unit foobar.service during system initialization.
Thank you!
Further reading:
man:systemctl(1)
man:systemd(1)
http://0pointer.de/blog/projects/systemd-for-admins-3.html
http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities
Seperti yang Anda lihat, init.d
telah dihapus demi systemd
. Itu di sini untuk tinggal sampai seseorang datang dengan sesuatu yang lebih baik. (Saya berharap seseorang dengan cepat mengerjakan penggantinya.)
Mencantumkan unit
Mencantumkan unit aktif menampilkan banyak informasi berguna tentang layanan Anda yang dimuat dan aktif. Outputnya terlalu detail untuk diperlihatkan di sini, tetapi coba perintah berikut di sistem Anda untuk melihat apa yang saya maksud.
$ systemctl list-units
Bidang status sangat bagus untuk dilihat, tetapi bidang deskripsi adalah yang paling berguna bagi saya. Ini memberikan informasi mendetail tentang layanan Anda.
Memulai layanan
Untuk mendapatkan nama layanan, daftar file unit Anda dan grep untuk yang Anda inginkan. Kemudian gunakan systemctl
perintah untuk memulai layanan Anda. Saya menggunakan firewalld
sebagai contoh.
$ sudo systemctl start firewalld
Anehnya, atau mungkin tidak terlalu mengejutkan, tidak ada respons dari memulai, menghentikan, atau memulai kembali layanan. Untuk memeriksa status layanan, Anda harus menggunakan perintah status.
Memeriksa status layanan
Untuk memeriksa status layanan, gunakan systemctl status service-name
perintah.
$ sudo systemctl status sshd
[sudo] password for khess:
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-29 07:44:57 CDT; 2h 17min ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1055 (sshd)
CGroup: /system.slice/sshd.service
└─1055 /usr/sbin/sshd -D
Apr 29 07:44:57 centos7 systemd[1]: Starting OpenSSH server daemon...
Apr 29 07:44:57 centos7 sshd[1055]: Server listening on 0.0.0.0 port 22.
Apr 29 07:44:57 centos7 sshd[1055]: Server listening on :: port 22.
Apr 29 07:44:57 centos7 systemd[1]: Started OpenSSH server daemon.
Apr 29 07:51:35 centos7 sshd[1396]: Accepted password for khess from 192.168.1.85 port 56769 ssh2
Saya suka status systemd karena detail yang diberikan. Misalnya, dalam daftar di atas, Anda melihat jalur lengkap ke file unit, status, perintah mulai, dan perubahan status terbaru.
[ Ingin mencoba Red Hat Enterprise Linux? Unduh sekarang secara gratis. ]
Menghentikan layanan
Menghentikan layanan yang sedang berjalan semudah memulainya.
$ sudo systemctl stop firewalld
Sekali lagi, Anda tidak melihat respons dari mengeluarkan perintah ini. Keluarkan status layanan untuk memeriksa keberhasilan atau kegagalan Anda.
Memulai ulang layanan
Jika Anda ingin menghentikan dan memulai layanan tanpa mengeluarkan dua perintah (bagaimanapun juga, sysadmin banyak yang malas), lakukan mulai ulang.
$ sudo systemctl restart firewalld
Tidak ada respons sistem yang ditampilkan.
Sistem mulai ulang, hentikan, dan matikan
Ketiga tugas ini adalah tugas umum yang perlu diketahui oleh sysadmin dan sekarang berada di bawah kendali systemd
.
Mulai ulang
Ada beberapa cara untuk me-restart sistem Anda, tetapi standby lama, reboot, sebenarnya adalah tautan ke systemctl
memerintah. Saya berasumsi bahwa karena berfungsi, ini menautkan systemctl
perintah dengan sakelar reboot ditambahkan sebagai berikut:
$ sudo systemctl reboot
Tautan yang sama berlaku untuk halt dan perintah shutdown.
Matikan dan hentikan
Tidak masalah bagaimana Anda melakukannya dengan halt -p
atau shutdown now
atau apa pun, perintah universal sekarang:
$ sudo systemctl poweroff
Perintah ini mematikan sistem.
Menyetel layanan agar berjalan saat booting
Anda sudah terbiasa dengan chkconfig
perintah untuk mengaktifkan layanan Anda untuk berjalan saat boot dan di bawah runlevel tertentu. Yah, hari-hari itu juga telah berlalu, dan mereka telah dirampas oleh systemctl
yang ada di mana-mana perintah.
Mengaktifkan layanan untuk berjalan saat booting
Untuk mengatur layanan apa pun untuk memulai saat boot, jalankan perintah berikut. Saya menggunakan firewalld
sebagai contoh layanan.
$ sudo systemctl enable firewalld
Menonaktifkan layanan agar tidak berjalan saat boot
Untuk mencegah layanan apa pun dimulai saat boot, terbitkan:
$ sudo systemctl disable firewalld
firewalld
layanan tidak akan dimulai saat boot.
Menutup
systemd/systemctl
yang singkat namun berguna ini panduan referensi harus menghilangkan rasa sakit saat berurusan dengan systemd
. Itulah teorinya, setidaknya. Dan, seperti yang sering Anda lihat di artikel saya atau mendengar saya berkata dengan lantang, "Semuanya bekerja di atas kertas." Pastikan untuk memberi tahu saya di Twitter pendapat Anda tentang artikel saya dan juga untuk menyarankan topik baru.
[ Kursus online gratis:Tinjauan teknis Red Hat Enterprise Linux. ]