linux命令学习之:systemctl - kosamino - 博客园 (2023)

  systemctl命令是系统服务管理器指令,主要负责控制systemd系统和服务管理器,它实际上将 service 和 chkconfig 这两个命令组合到一起。

  CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。

  Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。

  在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非全是如此。

1、原来的 service 命令与 systemctl 命令对比

daemon命令systemctl命令说明
service [服务] startsystemctl start [unit type]启动服务
service [服务] stopsystemctl stop [unit type]停止服务
service [服务] restartsystemctl restart [unit type]重启服务

此外还是二个systemctl参数没有与service命令参数对应

  • status:参数来查看服务运行情况
  • reload:重新加载服务,加载更新后的配置文件(并不是所有服务都支持这个参数,比如network.service)

  示例:

#启动网络服务systemctl start network.service#停止网络服务systemctl stop network.service#重启网络服务systemctl restart network.service#查看网络服务状态systemctl status network.serivce

2、原来的chkconfig 命令与 systemctl 命令对比

daemon命令systemctl命令说明
chkconfig [服务] onsystemctl enable [unit type]设置服务开机启动
chkconfig [服务] offsystemctl disable [unit type]设备服务禁止开机启动

  示例:

#停止cup电源管理服务systemctl stop cups.service#禁止cups服务开机启动systemctl disable cups.service#查看cups服务状态systemctl status cups.service#重新设置cups服务开机启动systemctl enable cups.service

3、查看系统上上所有的服务

  命令格式:systemctl [command] [–type=TYPE] [–all]

  参数详解:

  command- list-units:依据unit列出所有启动的unit。加上 –all 才会列出没启动的unit; - list-unit-files:依据/usr/lib/systemd/system/ 内的启动文件,列出启动文件列表

–type=TYPE- 为unit type, 主要有service, socket, target

  应用举例:

systemctl命令说明
systemctl列出所有的系统服务
systemctl list-units列出所有启动unit
systemctl list-unit-files列出所有启动文件
systemctl list-units –type=service –all列出所有service类型的unit
systemctl list-units –type=service –all grep cpu列出 cpu电源管理机制的服务
systemctl list-units –type=target –all列出所有target

4、systemctl特殊的用法

systemctl命令说明
systemctl is-active [unit type]查看服务是否运行
systemctl is-enable [unit type]查看服务是否设置为开机启动
systemctl mask [unit type]注销指定服务
systemctl unmask [unit type]取消注销指定服务

  应用举例:

#查看网络服务是否启动systemctl is-active network.service#检查网络服务是否设置为开机启动systemctl is-enable network.service#停止cups服务systemctl stop cups.service#注销cups服务systemctl mask cups.service#查看cups服务状态systemctl status cups.service#取消注销cups服务systemctl unmask cups.service

5、常用示例:

Systemctl基础、体验

1. 检查系统中是否安装有systemctl并确定当前安装的版本

[root@CTU1000094955 ~]# systemctl --versionsystemd 219+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

  上例中很清楚地表明,我们安装了219版本的systemctl。

2. 检查systemd和systemctl的二进制文件和库文件的安装位置

[root@CTU1000094955 ~]# whereis systemdsystemd: /usr/lib/systemd /etc/systemd /usr/share/systemd /usr/share/man/man1/systemd.1.gz[root@CTU1000094955 ~]# whereis systemctlsystemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz

3. 检查systemd是否运行

[root@CTU1000094955 ~]# ps -eaf | grep [s]ystemdroot 1 0 0 16:15 ? 00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 21root 631 1 0 16:15 ? 00:00:24 /usr/lib/systemd/systemd-journaldroot 661 1 0 16:15 ? 00:00:00 /usr/lib/systemd/systemd-udevddbus 813 1 0 16:15 ? 00:00:02 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activationroot 841 1 0 16:15 ? 00:00:00 /usr/lib/systemd/systemd-logind

  注意:systemd是作为父进程(PID=1)运行的。在上面带(-e)参数的ps命令输出中,选择所有进程,(-a)选择除会话前导外的所有进程,并使用(-f)参数输出完整格式列表(即 -eaf)。

  也请注意上例中后随的方括号和例子中剩余部分。方括号表达式是grep的字符类表达式的一部分。

4. 分析systemd启动进程

[root@CTU1000094955 ~]# systemd-analyzeStartup finished in 743ms (kernel) + 6.959s (initrd) + 17.696s (userspace) = 25.399s

5. 分析启动时各个进程花费的时间

[root@CTU1000094955 ~]# systemd-analyze blame 11.859s dev-xvda1.device 5.670s NetworkManager-wait-online.service 4.610s plymouth-quit-wait.service 3.757s systemd-udev-settle.service 3.078s kdump.service 2.257s mysql.service 1.451s libvirtd.service 1.228s postfix.service 751ms uvp-monitor.service 675ms spesserviced.service 675ms messageserviced.service 660ms tuned.service 586ms network.service 525ms accounts-daemon.service 467ms NetworkManager.service 457ms systemd-udevd.service 416ms abrt-ccpp.service 397ms firewalld.service 365ms ModemManager.service

6. 分析启动时的关键链

[root@CTU1000094955 ~]# systemd-analyze critical-chainThe time after the unit is active or started is printed after the "@" character.The time the unit takes to start is printed after the "+" character.graphical.target @17.682s?..multi-user.target @17.682s ?..getty.target @17.682s ?..serial-getty@hvc0.service @17.681s ?..systemd-user-sessions.service @12.929s +18ms ?..remote-fs.target @12.921s ?..remote-fs-pre.target @12.921s ?..iscsi-shutdown.service @12.907s +12ms ?..network.target @12.900s ?..network.service @12.311s +586ms ?..NetworkManager.service @6.166s +467ms ?..basic.target @5.903s ?..sockets.target @5.903s ?..rpcbind.socket @5.903s ?..sysinit.target @5.895s ?..systemd-update-utmp.service @5.877s +16ms ?..auditd.service @5.738s +135ms ?..systemd-tmpfiles-setup.service @5.661s +73ms ?..rhel-import-state.service @5.526s +134ms ?..local-fs.target @5.525s ?..run-user-0.mount @14.041s ?..local-fs-pre.target @1.615s ?..systemd-tmpfiles-setup-dev.service @ ?..kmod-static-nodes.service @1.473s ?..systemd-journald.socket ?..-.slice

  重要:Systemctl接受服务(.service),挂载点(.mount),套接口(.socket)和设备(.device)作为单元。

7. 列出所有可用单元

[root@CTU1000094955 ~]# systemctl list-unit-filesUNIT FILE STATE proc-sys-fs-binfmt_misc.automount static dev-hugepages.mount static dev-mqueue.mount static proc-fs-nfsd.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 disabledvar-lib-nfs-rpc_pipefs.mount static brandbot.path disabledcups.path enabled systemd-ask-password-console.path static

8. 列出所有运行中单元

[root@CTU1000094955 ~]# systemctl list-units UNIT LOAD ACTIVE SUB DESCRIPTION proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File System Automount Point sys-devices-pci0000:00-0000:00:01.1-ata2-host1-target1:0:1-1:0:1:0-block-sr0.device loaded active plugged QEMU_DVD-ROM sys-devices-platform-serial8250-tty-ttyS2.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS2 sys-devices-platform-serial8250-tty-ttyS3.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS3 sys-devices-pnp0-00:08-tty-ttyS0.device loaded active plugged /sys/devices/pnp0/00:08/tty/ttyS0 sys-devices-pnp0-00:09-tty-ttyS1.device loaded active plugged /sys/devices/pnp0/00:09/tty/ttyS1 sys-devices-vbd\x2d51712-block-xvda-xvda1.device loaded active plugged /sys/devices/vbd-51712/block/xvda/xvda1 sys-devices-vbd\x2d51712-block-xvda-xvda2.device loaded active plugged /sys/devices/vbd-51712/block/xvda/xvda2 sys-devices-vbd\x2d51712-block-xvda.device loaded active plugged /sys/devices/vbd-51712/block/xvda sys-devices-vbd\x2d51776-block-xvde.device loaded active plugged LVM PV I2rhCm-www3-J79i-r3ei-1XCb-a1qS-3OWSg9 on /dev/xvde sys-devices-vif\x2d0-net-eth0.device loaded active plugged /sys/devices/vif-0/net/eth0

9. 列出所有失败单元

[root@CTU1000094955 ~]# systemctl --failed UNIT LOAD ACTIVE SUB DESCRIPTION?.bluetooth.service loaded failed failed Bluetooth service?.rc-local.service loaded failed failed /etc/rc.d/rc.local CompatibilityLOAD = Reflects whether the unit definition was properly loaded.ACTIVE = The high-level unit activation state, i.e. generalization of SUB.SUB = The low-level unit activation state, values depend on unit type.2 loaded units listed. Pass --all to see loaded but inactive units, too.To show all installed unit files use 'systemctl list-unit-files'.

10. 检查某个单元(如 cron.service)是否启用

[root@CTU1000094955 ~]# systemctl is-enabled firewalld.service
disabled

11. 检查某个单元或服务是否运行

[root@CTU1000094955 ~]# systemctl status firewalld.service?.firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2017-11-25 16:20:44 CST; 1h 29min ago Main PID: 7677 (firewalld) CGroup: /system.slice/firewalld.service ?..7677 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopidNov 25 16:20:43 CTU1000094955 systemd[1]: Starting firewalld - dynamic firewall daemon...Nov 25 16:20:44 CTU1000094955 systemd[1]: Started firewalld - dynamic firewall daemon.

使用Systemctl控制并管理服务

12. 列出所有服务(包括启用的和禁用的)

[root@CTU1000094955 ~]# systemctl list-unit-files --type=serviceUNIT FILE STATE abrt-ccpp.service enabled abrt-oops.service enabled abrt-pstoreoops.service disabledabrt-vmcore.service enabled abrt-xorg.service enabled abrtd.service enabled accounts-daemon.service enabled alsa-restore.service static alsa-state.service static alsa-store.service static anaconda-direct.service static anaconda-nm-config.service static anaconda-noshell.service static anaconda-shell@.service static

13. Linux中如何启动、重启、停止、重载服务以及检查服务(如 firewalld.service)状态

[root@CTU1000094955 ~]# systemctl start httpd.serviceFailed to start httpd.service: Unit httpd.service failed to load: No such file or directory.[root@CTU1000094955 ~]# systemctl start firewalld.service[root@CTU1000094955 ~]# systemctl restart firewalld.service[root@CTU1000094955 ~]# systemctl stop firewalld.service[root@CTU1000094955 ~]# systemctl reload firewalld.serviceJob for firewalld.service invalid.[root@CTU1000094955 ~]# systemctl status firewalld.service?.firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead)Nov 25 16:18:11 CTU1000094955 systemd[1]: Stopped firewalld - dynamic firewall daemon.Nov 25 16:20:43 CTU1000094955 systemd[1]: Starting firewalld - dynamic firewall daemon...Nov 25 16:20:44 CTU1000094955 systemd[1]: Started firewalld - dynamic firewall daemon.Nov 25 17:52:25 CTU1000094955 systemd[1]: Started firewalld - dynamic firewall daemon.Nov 25 17:52:38 CTU1000094955 systemd[1]: Stopping firewalld - dynamic firewall daemon...Nov 25 17:52:40 CTU1000094955 systemd[1]: Starting firewalld - dynamic firewall daemon...Nov 25 17:52:40 CTU1000094955 systemd[1]: Started firewalld - dynamic firewall daemon.Nov 25 17:52:53 CTU1000094955 systemd[1]: Stopping firewalld - dynamic firewall daemon...Nov 25 17:52:55 CTU1000094955 systemd[1]: Stopped firewalld - dynamic firewall daemon.Nov 25 17:53:07 CTU1000094955 systemd[1]: Unit firewalld.service cannot be reloaded because it is inactive.[root@CTU1000094955 ~]# systemctl restart firewalld.service[root@CTU1000094955 ~]# systemctl reload firewalld.service[root@CTU1000094955 ~]# systemctl status firewalld.service?.firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2017-11-25 17:53:40 CST; 8s ago Process: 31721 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS) Main PID: 31008 (firewalld) CGroup: /system.slice/firewalld.service ?..31008 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopidNov 25 17:53:39 CTU1000094955 systemd[1]: Starting firewalld - dynamic firewall daemon...Nov 25 17:53:40 CTU1000094955 systemd[1]: Started firewalld - dynamic firewall daemon.Nov 25 17:53:43 CTU1000094955 systemd[1]: Reloaded firewalld - dynamic firewall daemon.

  注意:当我们使用systemctl的start,restart,stop和reload命令时,我们不会从终端获取到任何输出内容,只有status命令可以打印输出。

14. 如何激活服务并在启动时启用或禁用服务(即系统启动时自动启动服务)

[root@CTU1000094955 ~]# systemctl is-active firewalld.serviceactive[root@CTU1000094955 ~]# systemctl enable firewalld.serviceCreated symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.Created symlink from /etc/systemd/system/basic.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.[root@CTU1000094955 ~]# systemctl list-unit-files |grep firewallfirewalld.service enabled [root@CTU1000094955 ~]# systemctl status firewalld.service?.firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2017-11-25 17:53:40 CST; 4min 6s ago Main PID: 31008 (firewalld) CGroup: /system.slice/firewalld.service ?..31008 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopidNov 25 17:53:39 CTU1000094955 systemd[1]: Starting firewalld - dynamic firewall daemon...Nov 25 17:53:40 CTU1000094955 systemd[1]: Started firewalld - dynamic firewall daemon.Nov 25 17:53:43 CTU1000094955 systemd[1]: Reloaded firewalld - dynamic firewall daemon.[root@CTU1000094955 ~]# systemctl disable firewalld.serviceRemoved symlink /etc/systemd/system/basic.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.[root@CTU1000094955 ~]# systemctl list-unit-files |grep firewallfirewalld.service disabled

15. 如何屏蔽(让它不能启动)或显示服务(如 httpd.service)

[root@CTU1000094955 ~]# systemctl mask firewalld.serviceCreated symlink from /etc/systemd/system/firewalld.service to /dev/null.[root@CTU1000094955 ~]# systemctl unmask firewalld.serviceRemoved symlink /etc/systemd/system/firewalld.service.

16. 使用systemctl命令杀死服务

[root@CTU1000094955 ~]# systemctl kill httpdFailed to kill unit httpd.service: Unit httpd.service is not loaded.[root@CTU1000094955 ~]# systemctl kill firewalld.service[root@CTU1000094955 ~]# systemctl status firewalld.service?.firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: inactive (dead) since Sat 2017-11-25 18:05:17 CST; 7s ago Main PID: 31008 (code=exited, status=0/SUCCESS)Nov 25 17:53:39 CTU1000094955 systemd[1]: Starting firewalld - dynamic firewall daemon...Nov 25 17:53:40 CTU1000094955 systemd[1]: Started firewalld - dynamic firewall daemon.Nov 25 17:53:43 CTU1000094955 systemd[1]: Reloaded firewalld - dynamic firewall daemon.

使用Systemctl控制并管理挂载点

17. 列出所有系统挂载点

[root@CTU1000094955 ~]# systemctl list-unit-files --type=mountUNIT FILE STATE dev-hugepages.mount static dev-mqueue.mount static proc-fs-nfsd.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 disabledvar-lib-nfs-rpc_pipefs.mount static 9 unit files listed.

18. 挂载、卸载、重新挂载、重载系统挂载点并检查系统中挂载点状态

[root@CTU1000094955 ~]# systemctl start tmp.mount[root@CTU1000094955 ~]# systemctl stop tmp.mount[root@CTU1000094955 ~]# systemctl reload tmp.mountJob for tmp.mount invalid.[root@CTU1000094955 ~]# systemctl status tmp.mount?.tmp.mount - Temporary Directory Loaded: loaded (/usr/lib/systemd/system/tmp.mount; disabled; vendor preset: disabled) Active: inactive (dead) since Sat 2017-11-25 18:09:06 CST; 25s ago Where: /tmp What: tmpfs Docs: man:hier(7) http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems Process: 40649 ExecUnmount=/bin/umount /tmp -n (code=exited, status=0/SUCCESS) Process: 40271 ExecMount=/bin/mount tmpfs /tmp -n -t tmpfs -o mode=1777,strictatime (code=exited, status=0/SUCCESS)Nov 25 18:08:58 CTU1000094955 systemd[1]: Mounting Temporary Directory...Nov 25 18:08:58 CTU1000094955 systemd[1]: Mounted Temporary Directory.Nov 25 18:09:06 CTU1000094955 systemd[1]: Unmounting Temporary Directory...Nov 25 18:09:06 CTU1000094955 systemd[1]: Unmounted Temporary Directory.Nov 25 18:09:21 CTU1000094955 systemd[1]: Unit tmp.mount cannot be reloaded because it is inactive.[root@CTU1000094955 ~]# systemctl restart tmp.mount[root@CTU1000094955 ~]# systemctl status tmp.mount?.tmp.mount - Temporary Directory Loaded: loaded (/usr/lib/systemd/system/tmp.mount; disabled; vendor preset: disabled) Active: active (mounted) since Sat 2017-11-25 18:09:53 CST; 2s ago Where: /tmp What: tmpfs Docs: man:hier(7) http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems Process: 40649 ExecUnmount=/bin/umount /tmp -n (code=exited, status=0/SUCCESS) Process: 41410 ExecMount=/bin/mount tmpfs /tmp -n -t tmpfs -o mode=1777,strictatime (code=exited, status=0/SUCCESS)Nov 25 18:09:53 CTU1000094955 systemd[1]: tmp.mount: Directory /tmp to mount over is not empty, mounting anyway.Nov 25 18:09:53 CTU1000094955 systemd[1]: Mounting Temporary Directory...Nov 25 18:09:53 CTU1000094955 systemd[1]: Mounted Temporary Directory.[root@CTU1000094955 ~]# systemctl reload tmp.mount

19. 在启动时激活、启用或禁用挂载点(系统启动时自动挂载)

[root@CTU1000094955 ~]# systemctl is-active tmp.mountactive[root@CTU1000094955 ~]# systemctl disable tmp.mountRemoved symlink /etc/systemd/system/local-fs.target.wants/tmp.mount.[root@CTU1000094955 ~]# systemctl is-active tmp.mountactive[root@CTU1000094955 ~]# systemctl enable tmp.mountFailed to execute operation: Access denied

20. 在Linux中屏蔽(让它不能启用)或可见挂载点

[root@CTU1000094955 ~]# systemctl mask tmp.mountln-s'/dev/null''/etc/systemd/system/tmp.mount'[root@CTU1000094955 ~]# systemctl unmask tmp.mountrm'/etc/systemd/system/tmp.mount'

使用Systemctl控制并管理套接口

21. 列出所有可用系统套接口

[root@CTU1000094955 ~]# systemctl list-unit-files --type=socketUNIT FILE STATE avahi-daemon.socket enabled cups.socket enabled dbus.socket static dm-event.socket enabled iscsid.socket enabled iscsiuio.socket enabled libvirtd.socket static lldpad.socket disabledlvm2-lvmetad.socket enabled lvm2-lvmpolld.socket enabled rpcbind.socket enabled rsyncd.socket disabledsshd.socket disabledsyslog.socket static systemd-initctl.socket static systemd-journald.socket static systemd-networkd.socket disabledsystemd-shutdownd.socket static systemd-udevd-control.socket static systemd-udevd-kernel.socket static virtlockd.socket disabled21 unit files listed.

22. 在Linux中启动、重启、停止、重载套接口并检查其状态

[root@CTU1000094955 ~]# systemctl start sshd.socket[root@CTU1000094955 ~]# systemctl restart sshd.socketFailed to restart sshd.socket: Transaction contains conflicting jobs 'restart' and 'stop' for sshd-keygen.service. Probably contradicting requirement dependencies configured.[root@CTU1000094955 ~]# systemctl status sshd.socket?.sshd.socket - OpenSSH Server Socket Loaded: loaded (/usr/lib/systemd/system/sshd.socket; disabled; vendor preset: disabled) Active: active (listening) since Sat 2017-11-25 18:28:12 CST; 22s ago Docs: man:sshd(8) man:sshd_config(5) Listen: [::]:22 (Stream) Accepted: 0; Connected: 0Nov 25 18:28:12 CTU1000094955 systemd[1]: Listening on OpenSSH Server Socket.Nov 25 18:28:12 CTU1000094955 systemd[1]: Starting OpenSSH Server Socket.[root@CTU1000094955 ~]# systemctl stop sshd.socket[root@CTU1000094955 ~]# systemctl reload sshd.socketFailed to reload sshd.socket: Job type reload is not applicable for unit sshd.socket.[root@CTU1000094955 ~]# systemctl status sshd.socket?.sshd.socket - OpenSSH Server Socket Loaded: loaded (/usr/lib/systemd/system/sshd.socket; disabled; vendor preset: disabled) Active: inactive (dead) since Sat 2017-11-25 18:28:46 CST; 19s ago Docs: man:sshd(8) man:sshd_config(5) Listen: [::]:22 (Stream) Accepted: 0; Connected: 0Nov 25 18:28:12 CTU1000094955 systemd[1]: Listening on OpenSSH Server Socket.Nov 25 18:28:12 CTU1000094955 systemd[1]: Starting OpenSSH Server Socket.Nov 25 18:28:46 CTU1000094955 systemd[1]: Closed OpenSSH Server Socket.Nov 25 18:28:46 CTU1000094955 systemd[1]: Stopping OpenSSH Server Socket.

24. 屏蔽(使它不能启动)或显示套接口

[root@CTU1000094955 ~]# systemctl mask sshd.socketCreated symlink from /etc/systemd/system/sshd.socket to /dev/null.[root@CTU1000094955 ~]# systemctl unmask sshd.socketRemoved symlink /etc/systemd/system/sshd.socket.

服务的CPU利用率(分配额)

25. 获取当前某个服务的CPU分配额(如httpd)

[root@CTU1000094955 ~]# systemctl show -p CPUShares httpd.serviceCPUShares=18446744073709551615

  注意:各个服务的默认CPU分配份额=1024,你可以增加/减少某个进程的CPU分配份额。

26. 将某个服务(httpd.service)的CPU分配份额限制为2000 CPUShares/

[root@CTU1000094955 ~]# systemctl set-property httpd.service CPUShares=2000 
# systemctl show
-p CPUShares httpd.service
CPUShares
=2000

  注意:当你为某个服务设置CPUShares,会自动创建一个以服务名命名的目录(如 httpd.service),里面包含了一个名为90-CPUShares.conf的文件,该文件含有CPUShare限制信息,你可以通过以下方式查看该文件:

[root@CTU1000094955 ~]# vi /etc/systemd/system/httpd.service.d/90-CPUShares.conf 
[Service]
CPUShares
=2000

27. 检查某个服务的所有配置细节

[root@CTU1000094955 ~]# systemctl show httpdRestart=noNotifyAccess=noneRestartUSec=100msTimeoutStartUSec=1min 30sTimeoutStopUSec=1min 30sWatchdogUSec=0WatchdogTimestampMonotonic=0StartLimitInterval=10000000StartLimitBurst=5StartLimitAction=noneFailureAction=none
... ... 中间省略部分内容

28. 分析某个服务(httpd)的关键链

[root@CTU1000094955 ~]# systemd-analyze critical-chain firewalld.serviceThe time after the unit is active or started is printed after the "@" character.The time the unit takes to start is printed after the "+" character.firewalld.service +380ms?..basic.target @5.903s ?..sockets.target @5.903s ?..rpcbind.socket @5.903s ?..sysinit.target @5.895s ?..systemd-update-utmp.service @5.877s +16ms ?..auditd.service @5.738s +135ms ?..systemd-tmpfiles-setup.service @5.661s +73ms ?..rhel-import-state.service @5.526s +134ms ?..local-fs.target @5.525s ?..run-user-0.mount @14.041s ?..local-fs-pre.target @1.615s ?..systemd-tmpfiles-setup-dev.service @1.519s +92ms ?..kmod-static-nodes.service @1.473s +44ms ?..systemd-journald.socket ?..-.slice

29. 获取某个服务(httpd)的依赖性列表

[root@CTU1000094955 ~]# systemctl list-dependencies firewalld.servicefirewalld.service?.?..system.slice?.?..basic.target?. ?..alsa-restore.service?. ?..alsa-state.service ?.?.....?. ?..microcode.service?. ?..rhel-autorelabel-mark.service?. ?..rhel-autorelabel.service?. ?..rhel-configure.service?. ?..rhel-dmesg.service?. ?..rhel-loadmodules.service?. ?..paths.target?. ?..slices.target... .... 后面省略部分内容

30. 按等级列出控制组

[root@CTU1000094955 ~]# systemd-cgls?..1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21?..user.slice?.?..user-988.slice?.?.?..session-c1.scope?.?. ?..3150 gdm-session-worker [pam/gdm-launch-environment]?.?. ?..3187 /usr/bin/gnome-session --autostart /usr/share/gdm/greeter/autostart --session gnome-initial-setup?.?. ?..3190 /usr/bin/dbus-launch --exit-with-session /usr/bin/gnome-session --autostart /usr/share/gdm/greeter/autostart --session gnome-initial-setup?.?. ?..3199 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session?.?. ?..3288 /usr/libexec/at-spi-bus-launcher?.?. ?..3305 /bin/dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3?.?. ?..3309 /usr/libexec/at-spi2-registryd --use-gnome-session?.?. ?..3410 gnome-shell --mode=initial-setup... ... 中间省略部分内容?.?. ?..3767 /usr/libexec/ibus-engine-simple?.?. ?..3879 gnome-keyring-daemon --unlock?.?..user-0.slice

31. 按CPU、内存、输入和输出列出控制组

[root@CTU1000094955 ~]# systemd-cgtopPath Tasks %CPU Memory Input/s Output/s/ 418 - 2.8G - -/system.slice/ModemManager.service 1 - - - -/system.slice/NetworkManager.service 1 - - - -/system.slice/abrt-oops.service 1 - - - -/system.slice/abrt-xorg.service 1 - - - -/system.slice/abrtd.service 1 - - - -/system.slice/accounts-daemon.service 1 - - - -/system.slice/alsa-state.service 1 - - - -/system.slice/atd.service 1 - - - -/system.slice/auditd.service 3 - - - -

控制系统运行等级

32. 启动系统救援模式

[root@CTU1000094955 ~]# systemctl rescueBroadcast message from root@tecmint on pts/0(Wed2015-04-2911:31:18 IST):The system is going down to rescue mode NOW!

33. 进入紧急模式

[root@CTU1000094955 ~]# systemctl emergencyWelcome to emergency mode!After logging in, type "journalctl -xb" to viewsystem logs,"systemctl reboot" to reboot,"systemctl default" to try againto boot intodefault mode.

34. 列出当前使用的运行等级

  运行等级说明如下。

  • Runlevel 0 : 关闭系统  shutdown.target  
  • Runlevel 1 : 紧急?维护模式  emergency.target
  • Runlevel 2 : 救援?维护模式  rescure.target
  • Runlevel 3 : 多用户,无图形系统  multi-user.target
  • Runlevel 4 : 多用户,无图形系统  无
  • Runlevel 5 : 多用户,图形化系统  graphical.target
  • Runlevel 6 : 关闭并重启机器  无
[root@CTU1000094955 ~]# systemctl get-defaultgraphical.target

35. 启动运行等级5,即图形模式

# systemctl isolate runlevel5.target或# systemctl isolate graphical.target [root@CTU1000094955 ~]# systemctl isolate runlevel5.targetPolicyKit daemon disconnected from the bus.We are no longer a registered authentication agent.

36. 启动运行等级3,即多用户模式(命令行)

# systemctl isolate runlevel3.target或# systemctl isolate multiuser.target

36. 设置多用户模式或图形模式为默认运行等级

# systemctl set-default runlevel3.target# systemctl set-default runlevel5.target

37. 重启、停止、挂起、休眠系统或使系统进入混合睡眠

# systemctl reboot  重新启动# systemctl halt# systemctl suspend  进入睡眠模式# systemctl hibernate  进入休眠模式# systemctl hybrid-sleep
# systemctl rescue  强制进入救援模式
# systemctl emergency  强制进入紧急救援模式
# systemctl poweroff  系统关机
Top Articles
Latest Posts
Article information

Author: Zonia Mosciski DO

Last Updated: 23/07/2023

Views: 6317

Rating: 4 / 5 (51 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Zonia Mosciski DO

Birthday: 1996-05-16

Address: Suite 228 919 Deana Ford, Lake Meridithberg, NE 60017-4257

Phone: +2613987384138

Job: Chief Retail Officer

Hobby: Tai chi, Dowsing, Poi, Letterboxing, Watching movies, Video gaming, Singing

Introduction: My name is Zonia Mosciski DO, I am a enchanting, joyous, lovely, successful, hilarious, tender, outstanding person who loves writing and wants to share my knowledge and understanding with you.