systemctl 资源管理
systemctl 是用于控制 systemd 的实用程序。 systemctl 为 CentOS 管理员提供了在 systemd 上执行多种操作的能力,包括-
Configure systemd units
Get status of systemd untis
Start and stop services
Enable / disable systemd services for runtime
systemctl 的命令语法非常基本,但可能会与Switch和选项混淆。我们将介绍管理 CentOS Linux 所需的
systemctl 最基本的功能。
Basic systemctl syntax:
systemctl [OPTIONS] COMMAND [NAME]
以下是与
systemctl 一起使用的常用命令-
start
stop
restart
reload
status
is-active
list-units
enable
disable
cat
show
我们已经讨论过
start、
stop、
reload、
restart、
enable 和
禁用 使用 systemctl。那么让我们来看看剩下的常用命令。
status
以最简单的形式,status 命令可用于查看整个系统状态-
[root@localhost rdc]# systemctl status
● localhost.localdomain
State: running
Jobs: 0 queued
Failed: 0 units
Since: Thu 2017-01-19 19:14:37 EST; 4h 5min ago
CGroup: /
├─1 /usr/lib/systemd/systemd--switched-root--system--deserialize 21
├─user.slice
│ └─user-1002.slice
│ └─session-1.scope
│ ├─2869 gdm-session-worker [pam/gdm-password]
│ ├─2881 /usr/bin/gnome-keyring-daemon--daemonize--login
│ ├─2888 gnome-session--session gnome-classic
│ ├─2895 dbus-launch--sh-syntax--exit-with-session
以上输出已被压缩。在现实世界中,
systemctl status 将输出大约 100 行树状进程状态。
假设我们要检查防火墙服务的状态-
[root@localhost rdc]# systemctl status firewalld
● firewalld.service-firewalld-dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-01-19 19:14:55 EST; 4h 12min ago
Docs: man:firewalld(1)
Main PID: 825 (firewalld)
CGroup: /system.slice/firewalld.service
└─825 /usr/bin/python-Es /usr/sbin/firewalld--nofork--nopid
如您所见,我们的防火墙服务目前处于活动状态,并且已经运行了 4 个多小时。
list-units
list-units 命令允许我们列出某种类型的所有单位。让我们检查由
systemd 管理的套接字-
[root@localhost]# systemctl list-units--type=socket
UNIT LOAD ACTIVE SUB DESCRIPTION
avahi-daemon.socket loaded active running Avahi mDNS/DNS-SD Stack Activation Socket
cups.socket loaded active running CUPS Printing Service Sockets
dbus.socket loaded active running D-Bus System Message Bus Socket
dm-event.socket loaded active listening Device-mapper event daemon FIFOs
iscsid.socket loaded active listening Open-iSCSI iscsid Socket
iscsiuio.socket loaded active listening Open-iSCSI iscsiuio Socket
lvm2-lvmetad.socket loaded active running LVM2 metadata daemon socket
lvm2-lvmpolld.socket loaded active listening LVM2 poll daemon socket
rpcbind.socket loaded active listening RPCbind Server Activation Socket
systemd-initctl.socket loaded active listening /dev/initctl Compatibility Named Pipe
systemd-journald.socket loaded active running Journal Socket
systemd-shutdownd.socket loaded active listening Delayed Shutdown Socket
systemd-udevd-control.socket loaded active running udev Control Socket
systemd-udevd-kernel.socket loaded active running udev Kernel Socket
virtlockd.socket loaded active listening Virtual machine lock manager socket
virtlogd.socket loaded active listening Virtual machine log manager socket
现在让我们检查当前正在运行的服务-
[root@localhost rdc]# systemctl list-units--type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-xorg.service loaded active running ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
accounts-daemon.service loaded active running Accounts Service
alsa-state.service loaded active running Manage Sound Card State (restore and store)
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
is-active
is-active 命令是 systemctl 命令的一个示例,旨在返回单元的状态信息。
[root@localhost rdc]# systemctl is-active ksm.service
active
cat
cat 是很少使用的命令之一。无需在 shell 中使用 cat 并键入单元文件的路径,只需使用
systemctl cat。
[root@localhost]# systemctl cat firewalld
# /usr/lib/systemd/system/firewalld.service
[Unit]
Description=firewalld-dynamic firewall daemon
Before=network.target
Before=libvirtd.service
Before = NetworkManager.service
After=dbus.service
After=polkit.service
Conflicts=iptables.service ip6tables.service ebtables.service ipset.service
Documentation=man:firewalld(1)
[Service]
EnvironmentFile =-/etc/sysconfig/firewalld
ExecStart = /usr/sbin/firewalld--nofork--nopid $FIREWALLD_ARGS
ExecReload = /bin/kill-HUP $MAINPID
# supress to log debug and error output also to /var/log/messages
StandardOutput = null
StandardError = null
Type = dbus
BusName = org.fedoraproject.FirewallD1
[Install]
WantedBy = basic.target
Alias = dbus-org.fedoraproject.FirewallD1.service
[root@localhost]#
现在我们已经更详细地探讨了
systemd 和
systemctl,让我们使用它们来管理
cgroups 或
中的资源对照组。