systemd与systemctl

systemd

传统的init (rhel5/6) 有两个缺陷:

1) 服务串行启动,服务之间存在依赖关系,必须前一个服务启动完,才能启动下一个.

2) 服务启动依赖脚本,所有功能依赖脚本怎么写,耗时,效率差

Systemd ,CentOS7的init程序,功能极为强大,内涵多个模块,并且支持如下特性:

1) 支持多种服务启动机制,以实现服务并行启动

i. 可以基于sockt 的激活机制,启动时不需要等服务启动起来,systemd创建相应的socket监听端口,假装”服务”启动了,待有真正访问时再激活服务.

ii. 可以基于Bus的激活机制,发送BUS信号假装服务起来了...

iii. 可以基于path的激活机制,systemd可以监视某个当某个路径,当路径或者其属性改变时激活服务

iv. 可以基于Device的激活机制,监控硬件设备状态,当其变为可用时,触发相应的服务,例如插入U盘启动自动挂载服务.

2) 支持按需激活服务,例如基于Socket的激活机制

3) 支持系统状态快照,支持将服务的进程数据保存至硬盘,下次启动时可直接恢复

Unit的定义:

systemd可以管理所有的系统资源,不同的资源统称为Unit,这是个配置文件,文件中包含系统服务,监听Socket,服务之间的依赖关系,系统快照... ,Systemd通过此文件控制资源如何启动,停止.

Unit类型:

Service Unit   以 .service结尾,服务的管理配置文件,类似于服务脚本

Target Unit  以 .target 结尾,是一堆service文件的集合

Device Unit 以.device 结尾,用于定义内核的设备文件

Mount   Unit 以.mount结尾,用于定义文件系统的挂载点

Socket Unit 以.socke结尾,用于标示进程间的通信socket文件

Snapshot Unit 以.snapshot结尾,管理快照的Unit

Swap Unit 以.swap标识swap设备的Unit

AutoMount Unit 以automont结尾,文件系统自动挂载.

2.2.1  systemctl

服务控制命令:

systemctl  start name.service #启动服务

systemctl status name.service #查看服务的状态

systemctl stop name.service #停止服务

systemctl restart  name.service #重启服务

systemctl  try-restart  name.service  #尝试重启服务,如果服务启动则重启,否则不操作.

systemctl  enable  name.service  #将服务设置为开机自启

systemctl  disable  name.service  #将服务关闭开机自启

systemctl  mask name.service  #将服务链接至/dev/null,禁止开机自启

systemctl unmask name.service  #恢复服务链接,与mask命令相反

systemctl list-units --type service  #查看当前启动的服务

systemctl  list-units --type service  --all #查看所有的服务

systemctl list-unit-files --type service #查看所有开机自启的服务

systemctl is-enable name.server #查看当前服务是否开机启动

systemctl  is-active name.server #查看当前服务是否激活启动

运行级别控制命令:

rhel5/6与7的运行级别对应关系:


rhel5/6的运行级别


systemd兼容级别


systemd相对应的运行级别


runlevel0


runlevel0.target


poweroff.target


runlevel1


runlevel1.target


rescue.target


runlevel2


runlevel2.target


multi-user.target


runlevel3


runlevel3.target


multi-user.target


runlevel4


runlevel4.target


multi-user.target


runlevel5


runlevel5.target


graphical.target


runlevel6


runlevel6.target


reboot.target

systemctl  list-units --type target  #查看已激活的target

systemctl list-units --type target --all #查看所有target

systemctl list-unit-files --type target #查看开机启动的target

systemctl  get-default #查看系统默认启动的target(运行级别)

systemctl    set-default  name.target #设置默认的target(运行级别)

systemctl isolate name.target #切换运行级别

系统控制命令:

systemctl  halt/poweroff #关机

systemctl  reboot #重启

systemctl rescue #进入救援模式

systemctl emergency  #进入紧急模式,比rescue更彻底,服务不启动,系统不初始化,驱动不加载

systemctl suspend     #暂停系统,类似休眠

systemctl hibernate     #冬眠

systemctl  hybrid-sleep    #混合睡眠

2.2.2  systemd-analyze

systemd-analyze命令主要用于分析启动服务所需要消耗的时间.

systemd-analyze     #查看启动需要消耗的总时间


[[email protected] ~]# systemd-analyze

Startup finished in 1.521s (kernel) + 1.361s (initrd) + 34.452s (userspace) = 37.334s

systemd-analyze  blame  #查看每个服务启动所需要消耗的时间


[[email protected] ~]# systemd-analyze

Startup finished in 1.521s (kernel) + 1.361s (initrd) + 34.452s (userspace) = 37.334s

[[email protected] ~]# systemd-analyze blame

14.371s kdump.service

7.387s NetworkManager-wait-online.service

7.157s postfix.service

4.342s firewalld.service

3.346s systemd-udev-settle.service

2.940s tuned.service

1.777s libvirtd.service

1.659s network.service

1.106s NetworkManager.service

946ms sshd.service

... ...

2.2.3  journalctl

systemd统一管理所有的Unit的启动日志,只需要使用journalctl一个命令,即可查看所有unit日志(内核与应用程序服务).

journalctl     #查看本次开机所有unit的启动日志信息

journalctl  -f    #实时监控

journalctl -k    #仅监控内核日志

journalctl -u httpd.service  #查看某个服务的启动日志信息

journalctl -u httpd.service -f   #实时查看httpd的日志信息

journalctl /bin/bash   #查看有关该应用程序的日志信息

2.2.4  localectl

localectl 命令 用于查看修改本地化的一些配置,例如系统语言,键盘映射,布局等

localectl       #查看本地化信息


[[email protected] ~]# localectl

System Locale: LANG=en_GB.utf8

VC Keymap: us

X11 Layout: us

使用相应的命令可进行更改:


[[email protected] ~]# localectl  set-

set-keymap      set-locale      set-x11-keymap

2.2.5  timedatectl

[[email protected] ~]# timedatectl

Local time: Tue 2018-04-24 07:16:35 PDT

Universal time: Tue 2018-04-24 14:16:35 UTC

RTC time: Tue 2018-04-24 14:16:35

Time zone: America/Los_Angeles (PDT, -0700)

NTP enabled: yes

NTP synchronized: yes

RTC in local TZ: no

DST active: yes

Last DST change: DST began at

Sun 2018-03-11 01:59:59 PST

Sun 2018-03-11 03:00:00 PDT

Next DST change: DST ends (the clock jumps one hour backwards) at

Sun 2018-11-04 01:59:59 PDT

Sun 2018-11-04 01:00:00 PST

原文地址:http://blog.51cto.com/jying/2107826

时间: 2024-10-11 21:05:49

systemd与systemctl的相关文章

systemd和systemctl详解

一.Systemd二.systemctl三.service的unit文件格式 systemd与systemctl一.Systemd:    POST-->Boot sequence(BIOS)-->Boot loader(MBR)-->kernel(ramdisk)-->rootfs(swtich-root)-->/sbin/init    所有用户空间的进程,都由init负责,当需要调用特权指令的时候,才会切换到内核init    CentOS 5:SysV init //

13个systemd与systemctl命令详解(二)(linux)

CPU Utilization (Shares) of a Service 25. Get the current CPU Shares of a Service (say httpd). # systemctl show -p CPUShares httpd.service CPUShares=1024 Note: The default each service has a CPUShare = 1024. You may increase/decrease CPU share of a p

centos7当中的systemd及systemctl(节选)

全面进入centos7时代,这个东东是需要系统了解的. http://blog.jobbole.com/85070/?utm_source=blog.jobbole.com&utm_medium=relatedPosts ======================== 系统管理员 systemd 的主要命令行工具是 systemctl. 多数管理员应该都已经非常熟悉系统服务和 init 系统的管理,比如 service.chkconfig 以及 telinit 命令的使用.systemd 也完

systemd service

Man pagesystemd.unitSYSTEMD.UNIT(5) systemd.unit SYSTEMD.UNIT(5) NAME systemd.unit - Unit configuration SYNOPSIS service.service, socket.socket, device.device, mount.mount, automount.automount, swap.swap, target.target, path.path, timer.timer, snapsh

RHEL7 -- systemd

systemd 在RHEL7中,进程ID 1属于systemd这个新的进程.(代替之前版本中的init) systemd提供了以下新功能: ·并行化功能,可以提高系统的启动速度 ·按需启动守护进程,而不需要单独的服务 ·自动服务依赖关系管理,可以防止长时间超时,例如在网络不可用时不启动网络服务 ·利用linux控制组一起追踪相关进程 有了systmed以后,基于shell的服务脚本基本仅用于几个传统服务.因此,带有shell变量的配置文件将被取代,如/etc/sysconfig中可以找到的配置文

systemctl命令完全指南

Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器. Systemd是一个系统管理守护进程.工具和库的集合,用于取代System V初始进程.Systemd的功能是用于集中管理和配置类UNIX系统. 在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署.Systemd通常是所有其它守护进程的父进程,但并非总是如此. 使用Systemctl管理Linux服务 本文旨在阐明在运行systemd的系统上"如

crontab命令、chkconfig、systemd命令

一:crontab命令 -u:指定某个用户,不加-u则为当前用户.-e:指定计划任务-l:列出计划任务-r:删除计划任务使用crontab -e来进行编写任务计划,实际上是使用vim工具打开了crontab的配置文件/var/spool/cron/username,如果是root,打开的就是/var/spool/cron/root,但是千万不能直接去编辑这个文件,可能会出错.01 10 05 06 3 echo "ok" > /root/cron.log从左到右分别为分,时,日,

linux的systemctl 命令用法 转

目录 预热 管理单个 unit 查看系统上的 unit 管理不同的操作环境(target unit) 检查 unit 之间的依赖性 相关的目录和文件 systemctl daemon-reload 子命令 总结 笔者在前文中概要的介绍了 systemd 的基本概念和主要特点.由于 systemd 相关的绝大多数任务都是通过 systemctl 命令管理的,所以本文将集中的介绍 systemctl 命令的用法.注意,本文以 ubuntu 16.04 进行介绍,文中所有的 demo 都在 ubunt

systemctl 命令完全指南

https://linux.cn/article-5926-1.html?pr systemctl 命令完全指南 2015-07-31 08:00 译自:http://www.tecmint.com/manage-services-using-systemd-and-systemctl-in-linux/作者: Avishek Kumar原创:LCTT https://linux.cn/article-5926-1.html译者: joeren Systemctl是一个systemd工具,主要负