频道栏目
首页 > 资讯 > 其他 > 正文

CentOS7的新特性

17-08-16        来源:[db:作者]  
收藏   我要投稿

CentOS7是2014年7月7日发布的,与旧版本的CentOS6相比,在内核版本、系统初始化技术、yum源、服务管理、网络配置、防火墙配置等方面都有很大的不同。

1. 内核版本

CentOS7的内核版本升级到了3.10,从2.x到3.10的大版本的升级,会有很大的改动。有些在CentOS6中默认可以使用的命令,在CentOS7中可能默认就没有安装,或者被其他的命令所替代。

2. yum源

在CentOS6中,默认是从官方源下载rpm包的,由于是国外的yum源,所以速度比较慢。

在CentOS7中,做了优化,当我们使用yum安装软件的时候,默认不会再从官方下载,而是自动寻找离自己地理位置最近的yum源开始下载。

3. 系统初始化技术

在CentOS6中,系统的启动采用init进程,init进程是系统启动的第一个进程,PID为1,它是所有其他进程的父进程。进程的启动方式是串行启动,只有前一个进程启动完,才会启动后一个进程,系统启动就比较慢。

而在CentOS7中,系统的启动采用systemd进程,systemd进程是系统启动的第一个进程,PID为1,它是所有其他进程的父进程。进程的启动方式是并行启动,系统启动就比较快。

3.1 systemd守护进程

在CentOS7中,systemd替代了initd,字母d是守护进程(daemon)的首字母,systemd守护进程为系统的启动和管理提供了一套完整的解决方案。

systemctl --version
# 查看systemd的版本

systemd包含一组命令,涉及到系统管理的方方面面。

3.1.1 systemctl

systemctl 是 systemd 的主命令,用于管理系统。

# 重启系统
systemctl reboot

# 关闭系统,切断电源
systemctl poweroff

# CPU停止工作
systemctl halt

# 暂停系统
systemctl suspend

# 启动进入救援状态(单用户模式)
systemctl rescue
3.1.2 systemd-analyze

systemd-analyze 命令用于查看启动耗时。

# 查看启动耗时
systemd-analyze

# 查看每个服务的启动耗时
systemd-analyze blame

# 显示瀑布状的启动过程流
systemd-analyze critical-chain
3.1.3 hostnamectl

hostnamectl 命令用于查看当前主机的基本信息。

hostnamectl
# 查看当前主机的基本信息
3.1.4 localectl

localectl 命令用于查看本地化设置

# 查看本地化设置
localectl
3.1.5 timedatectl

timedatectl 命令用于查看当前的时区、时间。

# 查看当前的时区、时间
timedatectl

# 显示所有可用的时区
timedatectl list-timezones  
3.1.6 loginctl

loginctl 命令用于查看当前登录的用户或连接的会话。

loginctl
# 查看当前连接的会话

loginctl list-users
# 查看当前登录的用户

loginctl show-user root
# 查看某个登录用户的信息

4. unit

CentOS7中新增了unit(单元)的概念,它是所有资源的统称。

unit总共分为12种:

Service:系统服务 Target:多个 Unit 构成的一个组 Device:硬件设备 Mount:文件系统的挂载点 Automount:自动挂载点 Path:文件或路径 Scope:不是由 Systemd 启动的外部进程 Slice:进程组 Snapshot:Systemd 快照,可以切回某个快照 Socket:进程间通信的 socket Swap:swap 文件 Timer:定时器
systemctl list-units
# 查看当前系统的所有unit 

systemctl list-units --type=service
# 查看所有类型为service的unit

4.1 unit的状态

systemctl status
# 查看当前系统中的unit状态

systemctl status sshd.service
# 查看指定的sshd.service的状态

systemctl is-active sshd.service
# 查看某个 Unit 是否正在运行

systemctl is-failed sshd.service
# 查看某个 Unit 是否处于关闭状态

systemctl is-enabled sshd.service
# 查看某个 Unit 是否开启了自启动状态

4.2 unit的管理

unit的管理,主要是对service(服务)的管理,如服务的启动、关闭、重启、自启动等。

在旧版本的CentOS6中,对于RPM包安装的服务的管理,主要是通过service命令和chkconfig命令来管理。如:

service network start|stop|status|restart|reload|force-reload
# 网络服务的启动|关闭|状态|重启|重新加载配置文件|强制重新加载配置文件

chkconfig network on|off
# 开启|关闭网络服务的自启动

在CentOS7中,对于RPM包安装的服务的管理,可以采用systemctl命令来管理,同时,向下兼容service命令和chkconfig命令。

systemctl start|stop|status|restart|reload|force-reload network
# 网络服务的启动|关闭|状态|重启|重新加载配置文件|强制重新加载配置文件

systemctl enable|disable network
# 开启|关闭网络服务的自启动

systemctl daemon-reload
# 重载所有修改过的配置文件

4.3 unit的配置文件

每一个 unit 都有一个配置文件,告诉 systemd 怎么启动这个 unit 。

systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/中的配置文件,真正的配置文件存放在/usr/lib/systemd/system/目录中。

systemctl enable命令,用于在上面两个目录之间,建立符号链接。

systemctl disable命令,用于在上面两个目录之间,撤销符号链接。

systemctl list-unit-files
# 列出所有unit的配置文件

systemctl list-unit-files --type=service
# 列出所有服务的配置文件

systemctl cat network.service
# 查看network服务的配置文件的内容
# 说明:末尾的.service可以省略,默认就是查看服务类型的unit。

5. target

系统启动时,需要启动大量的 unit。如果每一次启动,都要写明本次启动需要哪些 unit,显然非常不方便。于是,在CentOS7中,又引入了target的概念。

target 就是一个 unit 组,包含许多相关的 unit 。启动某个 target 的时候,systemd 就会启动里面所有的 unit。从这个意义上说,target 类似于”状态点”,启动某个 target 就好比启动到某种状态。

传统的init启动模式里面,有 runlevel (系统运行级别)的概念,跟 target 的作用很类似。不同的是,runlevel 是互斥的,不可能多个 runLevel 同时启动,但是多个 target 可以同时启动。

systemctl list-unit-files --type=target
# 查看当前系统的所有target

systemctl list-dependencies multi-user.target
# 查看某个target包含的所有unit

systemctl get-default
# 查看启动时的默认target

systemctl set-default multi-user.target
# 设置启动时的默认target

systemctl isolate multi-user.target
# 切换到另一个target,同时关闭前一个target中所有不属于后一个target的进程

传统的runlevel(系统运行级别)和target的对比:

传统的运行级别 runlevel target 符号链接
0 关机 runlevel0.target poweroff.target
1 单用户模式(命令行界面) runlevel1.target rescue.target
2 不完全的多用户模式(命令行界面) runlevel2.target multi-user.target
3 完全的多用户模式(命令行界面) runlevel3.target multi-user.target
4 未分配,系统保留 runlevel4.target multi-user.target
5 标准的图形界面 runlevel5.target graphical.target
6 重启 runlevel6.target reboot.target

传统的init进程与CentOS7中的systemd进程的主要区别有两点:

设置系统默认的运行级别。 以前是在/etc/inittab文件中设置,现在是将/etc/systemd/system/default.target 文件符号链接到/lib/systemd/system/multi-user.target。 启动脚本的位置。 以前是/etc/init.d目录,符号链接到不同的 runlevel 目录 (比如/etc/rc3.d、/etc/rc4.d等),现在则存放在/lib/systemd/system和/etc/systemd/system目录。

6. 日志管理

systemd 统一管理所有的 unit 的启动日志。好处是只用journalctl命令,就可查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf,默认情况下 ,只保存本次启动的日志。

journalctl
# 查看所有的启动日志

journalctl -k
# 查看内核日志(不显示应用日志)

journalctl -b
journalctl -b -0
# 只查看系统本次启动的日志

journalctl -b -1
# 查看系统上一次启动的日志(需更改设置)

journalctl -n
# 显示尾部的最新10行日志

journalctl -n 20
# 显示尾部的最新20行日志

journalctl /usr/lib/systemd/systemd
# 查看指定服务的日志

journalctl _PID=1
# 查看指定进程的日志

journalctl /usr/bin/bash
# 查看某个路径的脚本的日志

journalctl _UID=0
# 查看指定用户的日志

journalctl -u network.service
# 查看指定的unit的日志

journalctl -u network.service -f
# 实时滚动查看指定的unit的最新日志
相关TAG标签
上一篇:hivemall之时间序列数据异常检测
下一篇:在cygwin上运行apache2
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站