如何在 CentOS 7.x 或 RHEL Linux 7 上使用 systemctl
在本文中,我們將學習如何使用 `systemctl` 命令。`systemctl` 是 Linux 發行版新版本中提供的一個新命令,用於控制系統和服務。我們將探討一些在 Linux 中使用 `systemctl` 命令的可能方法。
檢查服務狀態
我們可以使用此命令驗證服務的狀態。以下是檢查服務的命令:
# systemctl status httpd httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2016-06-02 06:48:58 EDT; 27s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 10011 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service ├─10011 /usr/sbin/httpd -DFOREGROUND ├─10012 /usr/sbin/httpd -DFOREGROUND ├─10013 /usr/sbin/httpd -DFOREGROUND ├─10014 /usr/sbin/httpd -DFOREGROUND ├─10015 /usr/sbin/httpd -DFOREGROUND └─10016 /usr/sbin/httpd -DFOREGROUND Jun 02 06:48:57 centos-linux-1.shared systemd[1]: Starting The Apache HTTP Server... Jun 02 06:48:58 centos-linux-1.shared systemd[1]: Started The Apache HTTP Server.
顯示服務
# systemctl show httpd Type=notify Restart=no NotifyAccess=main RestartUSec=100ms TimeoutStartUSec=1min 30s TimeoutStopUSec=1min 30s WatchdogUSec=0 WatchdogTimestamp=Thu 2016-06-02 06:48:58 EDT WatchdogTimestampMonotonic=2588490928 StartLimitInterval=10000000StartLimitBurst=5 StartLimitAction=none …. . . . . AssertResult=yes ConditionTimestamp=Thu 2016-06-02 06:48:57 EDT ConditionTimestampMonotonic=2587709137 AssertTimestamp=Thu 2016-06-02 06:48:57 ED AssertTimestampMonotonic=2587709138 Transient=no This will display all the status information about http (web servers services) Verifying the Services active or enabled Here we will verify that the servers are active and they are enabled at system startup To verify the services active or not we needed to run the below command # systemctl is-active httpd.service active
啟用服務在系統啟動時或機器重啟後執行
# systemctl enable httpd Created symlink from /etc/systemd/system/multi-use.rtarget.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
要檢查服務是否已啟用,請執行以下命令:
# systemctl is-enabled httpd enabled
要手動啟動或重啟服務,我們可以使用以下命令:
# systemctl start httpd # systemctl restart httpd
要列出依賴項,我們可以使用以下命令:
# systemctl list-dependencies httpd httpd.service ├─-.mount ├─system.slice └─basic.target ├─microcode.service ├─rhel-autorelabel-mark.service ├─rhel-autorelabel. service ├─rhel-configure.service ├─rhel-dmesg.service ├─rhel-loadmodules.service ├─paths.target ├─slices.target │ ├─-.slice │ └─system.slice… … . ..
列出當前在後臺執行的所有作業
# systemctl list-jobs No jobs running.
列出所有已安裝的單元檔案
# systemctl list-unit files
列出特定服務的全部已安裝單元檔案
# systemctl list-unit-files | grep httpd httpd.service enabled
列出所有已安裝的套接字及其型別
# systemctl list-sockets --show-types LISTEN TYPE UNIT ACTIVATES /dev/log Datagram systemd-journald.socket systemd-j /run/dmeventd-client FIFO dm-event.socket dm-event. /run/dmeventd-server FIFO dm-event.socket dm-event. /run/lvm/lvmetad.socket Stream lvm2-lvmetad.socket lvm2-lvme /run/lvm/lvmpolld.socket Stream lvm2-lvmpolld.socket lvm2-lvmp /run/systemd/initctl/fifo FIFO systemd-initctl.socket systemd-i /run/systemd/journal/socket Datagram systemd-journald.socket systemd-j /run/systemd/journal/stdout Stream systemd-journald.socket systemd-j /run/systemd/shutdownd Datagram systemd-shutdownd.socket systemd-s /run/udev/control SequentialPacket systemd-udevd-control.socket systemd-u /var/run/dbus/system_bus_socket Stream dbus.socket dbus.serv kobject-uevent 1 Netlink systemd-udevd-kernel.socket systemd-u 12 sockets listed. Pass --all to see loaded but inactive sockets, too.
設定/列出預設目標(即執行級別)
# systemctl set-default multi-user.target Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target. # systemctl get-default multi-user.target
遮蔽和取消遮蔽服務
在某些情況下,尤其是在大型公司中,一位管理員可能會停止伺服器,而另一位管理員則會啟動服務。為了避免這種情況,我們可以遮蔽和取消遮蔽服務。如果某些服務在未取消遮蔽的情況下被停止,我們將無法再次啟動這些服務。
# systemctl mask httpd Created symlink from /etc/systemd/system/httpd.service to /dev/null.
檢視遮蔽服務後的狀態
# httpd.service Loaded: masked (/dev/null) Active: active (running) since Thu 2016-06-02 07:03:27 EDT; 10min ago Main PID: 10128 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service ├─10128 /usr/sbin/httpd -DFOREGROUND ├─10129 /usr/sbin/httpd -DFOREGROUND ├─10130 /usr/sbin/httpd -DFOREGROUND ├─10131 /usr/sbin/httpd -DFOREGROUND ├─10132 /usr/sbin/httpd -DFOREGROUND └─10133 /usr/sbin/httpd -DFOREGROUND Jun 02 07:03:27 centos-linux-1.shared systemd[1]: Starting The Apache HTTP Server... Jun 02 07:03:27 centos-linux-1.shared systemd[1]: Started The Apache HTTP Server. Jun 02 07:13:47 centos-linux-1.shared systemd[1]: httpd.service: Got notification m.... Jun 02 07:13:57 centos-linux-1.shared systemd[1]: httpd.service: Got notification m.... Jun 02 07:14:07 centos-linux-1.shared systemd[1]: httpd.service: Got notification m.... Jun 02 07:14:17 centos-linux-1.shared systemd[1]: httpd.service: Got notification m.... Hint: Some lines were ellipsized, use -l to show in full.
如果我們嘗試啟動被遮蔽的服務,將會顯示錯誤。
# systemctl start httpd Failed to start httpd.service: Unit httpd.service is masked.
要取消遮蔽服務以啟動,我們需要執行以下命令:
# systemctl unmask httpd Removed symlink /etc/systemd/system/httpd.service.
取消遮蔽服務後,我們可以再次啟動服務。
# systemctl start httpd # systemctl status httpd httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2016-06-02 07:03:27 EDT; 18min ago Docs: man:httpd(8) man:apachectl(8) Main PID: 10128 (httpd) Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec" CGroup: /system.slice/httpd.service ├─10128 /usr/sbin/httpd -DFOREGROUND ├─10129 /usr/sbin/httpd -DFOREGROUND ├─10130 /usr/sbin/httpd -DFOREGROUND ├─10131 /usr/sbin/httpd -DFOREGROUND ├─10132 /usr/sbin/httpd -DFOREGROUND └─10133 /usr/sbin/httpd -DFOREGROUND
我們可以建立 Linux 機器上服務的快照。
快照是指系統管理器的已儲存狀態。快照僅用於儲存和恢復正在執行或已停止的單元。
要建立服務的快照,我們可以使用:
# systemctl snapshot httpd ht.tpdsnapshot
檢視服務快照的狀態
# systemctl status httpd.snapshot httpd.snapshot Loaded: loaded Active: inactive (dead) Jun 02 07:26:31 centos-linux-1.shared systemd[1]: Created snapshot httpd.snapshot.
刪除快照並檢查服務快照的狀態
# systemctl delete httpd.snapshot # systemctl status httpd.snapshot httpd.snapshot Loaded: not-found (Reason: No such file or directory) Active: inactive (dead) Jun 02 07:26:31 centos-linux-1.shared systemd[1]: Created snapshot httpd.snapshot. Jun 02 07:29:05 centos-linux-1.shared systemd[1]: Removing snapshot httpd.snapshot.
透過本文,我們現在能夠控制 Linux 新版本或最新版本中的服務,其中 `systemctl` 命令取代了舊版 Linux 中的 `service` 命令。希望這將有助於您的工作。
廣告