Liệt kê các dịch vụ đang chạy dưới systemd Image Liệt kê các dịch vụ đang chạy dưới systemd

Bài viết này sẽ giới thiệu với các bạn về cách liệt kê các dịch vụ đang chạy dưới systemd trên CentOS 8 của hệ điều hành Linux. Trong bài viết này chúng ta sẽ tìm hiểu về systemd và cách liệt kê các dịch vụ đang chạy giúp cho chúng ta tự học Linux dể dàng hơn.

1. Giới thiệu về systemd

Các bản Linux hiện đại từ CentOS 7, RHEL 7 trở lên thì init và runlevel được thay thế bởi systemd và cũng thực hiện nhiệm vụ tương tự như init và runlevel. Systemd cũng giống như init là tiến trình chạy đầu tiên trên hệ thống với ID=1.

Các hệ thống sử dụng systemd khi khởi động sẽ nhanh hơn các hệ thống sử dụng init trước đó. Do các hệ thống sử dụng systemd được thay thế loạt các bước được trình tự hoá với kỹ thuật song song cho phép nhiều dịch vụ khởi tạo cùng lúc.

Các shell khởi động phức tạp được thay thế bằng các tệp cấu hình đơn giản, liệt kê những gì phải được thực hiện trước khi một dịch vụ được khởi động, cách thực thi dịch vụ khởi động và điều kiện dịch vụ nào cần được thực hiện khi khởi động xong. Một điều cần lưu ý là /sbin/init bây giờ chỉ trỏ tới /lib/systemd/systemd. Systemd sẽ thay thế cho quá trình init.

Các tiến trình này hoạt động liên tục nhưng cũng không thể để người dùng ngồi nhìn nó chạy mãi. Vì thế, nó được chạy ngầm. Systemd cũng không phải là để chỉ các tiến trình chạy ngầm đó, mà nó là một nhóm các chương trình đặc biệt sẽ quản lý, vận hành và theo dõi các tiến trình khác hoạt động.

Systemctl là ứng dụng kiểm soát các dịch vụ quản lí hệ thống.

2. Liệt kê các dịch vụ đang chạy dưới systemd

Để liệt kê tất cả các dịch vụ được tải (dịch dụ đó đang hoạt động, đang chạy, đã thoát hoặc chạy không thành công) trên hệ thống thì chúng ta có thể sử dụng tùy chọn typelist-units để hiển thị như sau:

[root@localhost ~]# systemctl list-units --type=service
UNIT                                                                         LOAD   ACTIVE SUB     DESCRIPTION
auditd.service                                                               loaded active running Security Auditing Service
chronyd.service                                                              loaded active running NTP client/server
crond.service                                                                loaded active running Command Scheduler
dbus.service                                                                 loaded active running D-Bus System Message Bus
dracut-shutdown.service                                                      loaded active exited  Restore /run/initramfs on>
firewalld.service                                                            loaded active running firewalld - dynamic firew>
getty@tty1.service                                                           loaded active running Getty on tty1
import-state.service                                                         loaded active exited  Import network configurat>
kdump.service                                                                loaded active exited  Crash recovery kernel arm>
kmod-static-nodes.service                                                    loaded active exited  Create list of required s>
lvm2-monitor.service                                                         loaded active exited  Monitoring of LVM2 mirror>
lvm2-pvscan@8:2.service                                                      loaded active exited  LVM event activation on d>
NetworkManager-wait-online.service                                           loaded active exited  Network Manager Wait Onli>

Hoặc chúng ta có thể chạy lệnh sau kết quả sẽ cho chúng ta như trên:

[root@localhost ~]# systemctl --type=service

Khi chúng ta muốn liệt kê tất cả các dịch vụ đang hoạt động, đang chạy và những dịch vụ đã thoát, bạn có thể thêm tùy chọn --state cùng với giá trị active như sau:

[root@localhost ~]# systemctl list-units --type=service --state=active
UNIT                                                                         LOAD   ACTIVE SUB     DESCRIPTION
auditd.service                                                               loaded active running Security Auditing Service
chronyd.service                                                              loaded active running NTP client/server
crond.service                                                                loaded active running Command Scheduler
dbus.service                                                                 loaded active running D-Bus System Message Bus
dracut-shutdown.service                                                      loaded active exited  Restore /run/initramfs on>
firewalld.service                                                            loaded active running firewalld - dynamic firew>
getty@tty1.service                                                           loaded active running Getty on tty1
import-state.service                                                         loaded active exited  Import network configurat>

Hoặc lệnh sau:

[root@localhost ~]# systemctl --type=service --state=active

Chúng ta muốn các dịch vụ được tải và đang hoạt động chạy lệnh sau:

[root@localhost ~]# systemctl list-units --type=service --state=running
UNIT                     LOAD   ACTIVE SUB     DESCRIPTION
auditd.service           loaded active running Security Auditing Service
chronyd.service          loaded active running NTP client/server
crond.service            loaded active running Command Scheduler
dbus.service             loaded active running D-Bus System Message Bus
firewalld.service        loaded active running firewalld - dynamic firewall daemon
getty@tty1.service       loaded active running Getty on tty1
NetworkManager.service   loaded active running Network Manager
polkit.service           loaded active running Authorization Manager
rngd.service             loaded active running Hardware RNG Entropy Gatherer Daemon
rsyslog.service          loaded active running System Logging Service
sshd.service             loaded active running OpenSSH server daemon
sssd.service             loaded active running System Security Services Daemon

Khi một dịch vụ hoạt động nó sẻ sử dụng một cổng. Để có thể xác định cổng mà một tiến trình trình nền chúng ta có thể sử dụng công cụ netstat như sau:

[root@localhost ~]# netstat -ltup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN      974/sshd
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      974/sshd
udp        0      0 localhost.locald:bootpc 0.0.0.0:*                           956/NetworkManager
udp        0      0 localhost:323           0.0.0.0:*                           886/chronyd
udp6       0      0 localhost:323           [::]:*                              886/chronyd

Trong đó các tùy chọn có ý nghĩa như sau:

  • -l: Dùng để in tất cả các cổng nghe.
  • -t: Hiển thị tất cả các kết nối TCP.
  • -u: Hiển thị tất cả các kết nối UDP.
  • -n: In số cổng số (thay vì tên ứng dụng).
  • -p: Hiển thị tên ứng dụng.

Khi máy chủ của chúng ta có firewall đang hoạt động thì việc chặn hoặc cho phép truy cập đến cổng được chọn, thì chúng ta có thể liệt kê các dịch vụ hoặc cổng đã được mở trong firewall bằng cách thực thi lệnh sau:

[root@localhost ~]# firewall-cmd --list-services
cockpit dhcpv6-client ssh
[root@localhost ~]# firewall-cmd --list-ports
22/tcp 80/tcp

3. Lời kết

Qua bài trên, giúp cho chúng ta hiểu hơn về cách liệt kê các dịch vụ đang chạy dưới systemd trên CentOS 8 của hệ điều hành Linux. Từ đây chúng ta có thể quản lý máy chủ chúng ta một cách tốt hơn.