Systemd là một quy trình chuẩn để quản lý các dịch vụ khởi động trong hệ điều hành Linux. Nó được sử dụng để kiểm soát các chương trình nào chạy khi hệ thống Linux khởi động. Nó là một trình quản lý hệ thống và đã trở thành tiêu chuẩn mới cho các hệ điều hành Linux. Systemd cho phép bạn tạo một dịch vụ systemd tùy chỉnh để chạy và quản lý bất kỳ quy trình nào. Trong hướng dẫn này, chúng tôi sẽ giải thích cách quản lý các dịch vụ bằng systemd trên Linux.
Bạn sẽ thấy kết quả sau:
Bạn có thể tìm vị trí của Systemd bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Để tìm vị trí systemctl, hãy chạy lệnh sau:
Bạn sẽ nhận được kết quả đầu ra sau:
Bạn cũng có thể xác minh xem Systemd có đang chạy hay không bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Bạn cũng có thể phân tích thời gian thực hiện của từng tiến trình khi khởi động hệ thống bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Để phân tích chuỗi quan trọng khi khởi động bằng lệnh sau:
Bạn sẽ nhận được kết quả sau:
Để khởi động dịch vụ Apache, hãy chạy lệnh sau:
Để khởi động lại dịch vụ Apache, hãy chạy lệnh sau:
Để dừng dịch vụ Apache, hãy chạy lệnh sau:
Để tải lại dịch vụ Apache, hãy chạy lệnh sau:
Để cho phép dịch vụ Apache khởi động sau khi khởi động lại hệ thống, hãy chạy lệnh sau:
Để xóa dịch vụ Apache khỏi quá trình khởi động hệ thống, hãy chạy lệnh sau:
Để tắt dịch vụ Apache, hãy chạy lệnh sau lệnh:
Để che giấu dịch vụ Apache, hãy chạy lệnh sau:
Để bỏ ẩn quy trình Apache, hãy chạy lệnh sau:
Để kiểm tra xem dịch vụ Apache đã được bật hay chưa, hãy chạy lệnh sau:
Để kiểm tra trạng thái của dịch vụ Apache, hãy chạy lệnh sau:
Nếu dịch vụ đang chạy, bạn sẽ nhận được đầu ra sau:
Sau khi đổi tên hoặc xóa bất kỳ tệp systemd nào, bạn sẽ cần tải lại tệp đó để áp dụng các thay đổi. Để tải lại tệp dịch vụ systemd, hãy chạy lệnh sau:
Để xem danh sách tất cả các đơn vị khả dụng, hãy chạy lệnh sau:
Bạn sẽ thấy danh sách tất cả các tệp đơn vị trong đầu ra sau:
Để xem danh sách tất cả các đơn vị đang hoạt động, hãy chạy lệnh sau:
Bạn sẽ thấy đầu ra sau:
Để xem danh sách tất cả các đơn vị bị lỗi, hãy chạy lệnh sau:
Để liệt kê tất cả các dịch vụ bao gồm các dịch vụ đã bật và đã tắt, hãy chạy lệnh sau:
Bạn sẽ thấy đầu ra sau:
Bạn có thể xem các thuộc tính của đơn vị SSH, hãy chạy lệnh sau:
Bạn sẽ thấy kết quả sau:
Để liệt kê tất cả các socket hệ thống khả dụng, hãy chạy lệnh sau:
Bạn sẽ thấy đầu ra sau:
Để khởi động socket SSH, hãy chạy lệnh sau:
Để dừng socket SSH, hãy chạy lệnh sau:
Để khởi động lại socket SSH, hãy chạy lệnh sau:
Để kiểm tra trạng thái của socket SSH, hãy chạy lệnh sau:
Để bật và tắt socket SSH khi khởi động, hãy chạy lệnh sau:
Để dừng hệ thống, hãy chạy lệnh sau:
Để tắt hệ thống, hãy chạy lệnh sau:
Để khởi động lại hệ thống, hãy chạy lệnh sau:
Điều kiện tiên quyết
- Một máy chủ chạy Linux với Systemd, tôi sẽ sử dụng máy chủ Ubuntu 20.04 ở đây.
- Một mật khẩu gốc được cấu hình cho máy chủ.
Xác minh Systemd
Theo mặc định, Systemd được cài đặt sẵn trong tất cả các hệ điều hành chính. Bạn có thể xác minh phiên bản Systemd đã cài đặt bằng lệnh sau:
Mã:
systemctl --version
Mã:
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
Mã:
whereis systemd
Mã:
systemd: /usr/bin/systemd /usr/lib/systemd /etc/systemd /usr/share/systemd /usr/share/man/man1/systemd.1.gz
Mã:
systemctl ở đâu
Mã:
systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz
Mã:
ps -eaf | grep systemd
Mã:
root 269 1 0 09:57 ? 00:00:01 /lib/systemd/systemd-journaldroot 294 1 0 09:57 ? 00:00:00 /lib/systemd/systemd-udevdsystemd+ 297 1 0 09:57 ? 00:00:00 /lib/systemd/systemd-networkdmessage+ 319 1 0 09:57 ? 00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-onlyroot 329 1 0 09:57 ? 00:00:00 /lib/systemd/systemd-logindsystemd+ 382 1 0 09:57 ? 00:00:00 /lib/systemd/systemd-resolvedroot 1128 1 0 10:47 ? 00:00:00 /lib/systemd/systemd --userroot 1177 1152 0 10:48 pts/0 00:00:00 grep --color=auto systemd
Mã:
systemd-analyze blame
Mã:
3.662 giây csm.service1.899 giây apt-daily-upgrade.service1.798 giây dev-sda1.device1.400 giây systemd-logind.service1.336 giây fstrim.service1.207 giây systemd-networkd.service1.131 giây systemd-resolved.service 856 giây man-db.service 842 giây systemd-journald.service 415 giây e2scrub_reap.service 320ms keyboard-setup.service 295ms networkd-dispatcher.service 239ms systemd-udev-trigger.service
Mã:
systemd-analyze critical-chain
Mã:
Thời gian khi thiết bị hoạt động hoặc bắt đầu được in sau ký tự "@".Thời gian thiết bị mất để bắt đầu được in sau ký tự "+".graphics.target @4.948 giây??multi-user.target @4.946 giây ??csm.service @1.282 giây +3.662 giây ??basic.target @1.277 giây ??sockets.target @1.276 giây ??dbus.socket @1.274 giây ??sysinit.target @1.257 giây ??systemd-update-utmp.service @1.247 giây +8ms ??systemd-tmpfiles-setup.service @1.228 giây +17ms ??systemd-journal-flush.service @1.201 giây +24ms ??systemd-journald.service @356ms +842ms ??systemd-journald.socket @313ms ??system.slice @225ms ??-.slice @225ms
Quản lý Dịch vụ với Systemd
Systemctl cung cấp một cách dễ dàng hơn để quản lý các dịch vụ systemd.Để khởi động dịch vụ Apache, hãy chạy lệnh sau:
Mã:
systemctl start apache2
Mã:
systemctl restart apache2
Mã:
systemctl stop apache2
Mã:
systemctl reload apache2
Mã:
systemctl enable apache2
Mã:
systemctl disable apache2
Mã:
systemctl kill apache2
Mã:
systemctl mask apache2
Mã:
systemctl unmask apache2
Mã:
systemctl is-enabled apache2
Mã:
systemctl status apache2
Mã:
? apache2.service - Máy chủ HTTP Apache Đã tải: đã tải (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Đang hoạt động: đang hoạt động (đang chạy) kể từ Sat 2021-01-09 10:53:12 UTC; 26 giây trước Tài liệu: https://httpd.apache.org/docs/2.4/ PID chính: 1708 (apache2) Nhiệm vụ: 55 (giới hạn: 2353) Bộ nhớ: 5,8M CGroup: /system.slice/apache2.service ??1708 /usr/sbin/apache2 -k start ??1709 /usr/sbin/apache2 -k start ??1710 /usr/sbin/apache2 -k start09/01 10:53:12 ubuntu2004 systemd[1]: Đang khởi động Máy chủ HTTP Apache...
Mã:
systemctl daemon-reload
Quản lý tệp đơn vị Systemd
Các lệnh trên sẽ hữu ích để quản lý các dịch vụ đơn lẻ. Tuy nhiên, không thể sử dụng để tìm trạng thái hiện tại của hệ thống. Có rất nhiều lệnh khác hữu ích để cung cấp thông tin này.Để xem danh sách tất cả các đơn vị khả dụng, hãy chạy lệnh sau:
Mã:
systemctl list-unit-files
Mã:
UNIT FILE STATE VENDOR PRESETproc-sys-fs-binfmt_misc.automount static enabled-.mount created enableddev-hugepages.mount static enableddev-mqueue.mount static enabledproc-sys-fs-binfmt_misc.mount disabled enabledsys-fs-fuse-connections.mount static enabledsys-kernel-config.mount static enabledsys-kernel-debug.mount static enabledsys-kernel-tracing.mount static enabledacpid.path enabled enabledntp-systemd-netif.path enabled enabledsystemd-ask-password-console.path static enabledsystemd-ask-password-wall.path static enabledsession-2.scope transient enabledacpid.service disabled enabledapt-daily-upgrade.service static enabledapt-daily.service static enabled[emailprotected] enabled enabledconsole-getty.service disabled disabledconsole-setup.service enabled enabled[emailprotected] static enabledcron.service enabled enabledcryptdisks-early.service masked enabledcryptdisks.service masked enabledcsm.service enabled enableddbus-org.freedesktop.hostname1.service static enableddbus-org.freedesktop.locale1.service static enabled
Mã:
systemctl list-units
Mã:
TẢI ĐƠN VỊ HOẠT ĐỘNG PHỤ MÔ TẢ > proc-sys-fs-binfmt_misc.automount đã tải đang hoạt động đang chờ Thực thi tùy ý Fil> sys-devices-pci0000:00-0000:00:03.0-virtio0-net-eth0.device đã tải đang hoạt động đã cắm thiết bị mạng Virtio > sys-devices-pci0000:00-0000:00:04.0-virtio1-net-eth1.device đã tải đang hoạt động đã cắm thiết bị mạng Virtio > sys-devices-pci0000:00-0000:00:05.0-virtio2-host2-target2:0:0-2:0:0:0-block-sda-sda1.device đã tải đang hoạt động đã cắm QEMU_HARDDISK 1 > sys-devices-pci0000:00-0000:00:05.0-virtio2-host2-target2:0:0-2:0:0:0-block-sda.thiết bị được tải đang hoạt động đã cắm QEMU_HARDDISK > sys-devices-platform-serial8250-tty-ttyS1.thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS10.thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS11.thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS12.thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS13. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS14. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS15. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS16. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS17. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS18. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS19. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS2. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS20. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS21. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS22. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS23. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS24. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS25. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS26. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS27. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS28. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS29. thiết bị được tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS3.thiết bị đã tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS30.thiết bị đã tải đang hoạt động đã cắm /sys/devices/platform/se> sys-devices-platform-serial8250-tty-ttyS31.device đã tải đang hoạt động đã cắm /sys/devices/platform/se>
Mã:
systemctl --failed
Mã:
systemctl list-unit-files --type=service
Mã:
UNIT FILE STATE VENDOR PRESETacpid.service đã tắt đã bậtapache-htcacheclean.service đã tắt đã bật[emailprotected] đã tắt đã bậtapache2.service đã bật đã bật[emailprotected] đã tắt đã bậtapt-daily-upgrade.service đã bật tĩnhapt-daily.service đã bật tĩnh[emailprotected] đã bật đã bậtconsole-getty.service đã tắt đã tắtconsole-setup.service đã bật đã bật[emailprotected] tĩnh đã bậtcron.service đã bật đã bậtcryptdisks-early.service masked đã bậtcryptdisks.service masked đã bậtcsm.service đã bật đã bậtdbus-org.freedesktop.hostname1.service tĩnh đã bậtdbus-org.freedesktop.locale1.service tĩnh đã bậtdbus-org.freedesktop.login1.service tĩnh đã bậtdbus-org.freedesktop.resolve1.service đã bật đã bậtdbus-org.freedesktop.timedate1.service tĩnh đã bậtdbus-org.freedesktop.timesync1.service masked đã bậtdbus.service tĩnh đã bậtdebug-shell.service đã tắt đã tắtdmesg.service đã bật đã bật[emailprotected] tĩnh đã bậte2scrub_all.service tĩnh đã bật[emailprotected] tĩnh đã bậte2scrub_reap.service đã bật đã bậtemergency.service tĩnh đã bậtfstrim.service tĩnh đã bậtgetty-static.service tĩnh enabled[emailprotected] enabled enabled
Mã:
systemctl show sshd.service
Mã:
Id=sshd.serviceNames=sshd.serviceRequires=basic.targetWants=system.sliceWantedBy=multi-user.targetConflicts=shutdown.targetBefore=shutdown.target multi-user.targetAfter=syslog.target network.target auditd.service systemd-journald.socket basic.target system.sliceDescription=OpenSSH server daemon
Quản lý Socket bằng Systemctl
Bạn cũng có thể quản lý socket bằng lệnh Systemctl.Để liệt kê tất cả các socket hệ thống khả dụng, hãy chạy lệnh sau:
Mã:
systemctl list-unit-files --type=socket
Mã:
UNIT FILE STATE VENDOR PRESETacpid.socket enabled đã bậtdbus.socket tĩnh đã bậtssh.socket vô hiệu hóa đã bậtsyslog.socket tĩnh đã tắtsystemd-fsckd.socket tĩnh đã bậtsystemd-initctl.socket tĩnh đã bậtsystemd-journald-audit.socket tĩnh đã bậtsystemd-journald-dev-log.socket tĩnh đã bật[emailprotected] tĩnh đã bậtsystemd-journald.socket tĩnh đã bật[emailprotected] tĩnh đã bậtsystemd-networkd.socket vô hiệu hóa đã bậtsystemd-rfkill.socket tĩnh đã bậtsystemd-udevd-control.socket tĩnh đã bậtsystemd-udevd-kernel.socket tĩnh đã bật
Mã:
systemctl start ssh.socket
Mã:
systemctl stop ssh.socket
Mã:
systemctl restart ssh.socket
Mã:
systemctl status ssh.socket
Mã:
systemctl enable ssh.socket
systemctl disable ssh.socket
Các lệnh bổ sung của Systemctl
Bạn có thể thực hiện một số tác vụ bằng lệnh systemctl. Nếu bạn muốn đưa hệ thống vào chế độ người dùng đơn, hãy chạy lệnh sau:
Mã:
systemctl rescue
Mã:
systemctl halt
Mã:
systemctl poweroff
Mã:
systemctl reboot