systemd的由来

Linux一直以来都采用init进程作为老大,但是init有两个缺点: 1.启动时间长,init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。 2.启动脚本复杂,初始化完成后,系统会加载很多脚本,脚本都会处理各自的情况,这回让脚本多而复杂。

CentOS5 是启动速度最慢的,串行启动过程,无论进程相互之间有无依赖关系。 CentOS6 相对启动速度有所改进,有依赖的进程之间依次启动而其他没有依赖关系的则并行启动。 CentOS7 所有进程无论有无依赖关系,都并行启动,当然有很多时候进程并没有真正的启动而是只有一个信号或者说是标记,在真正利用的时候,才会真正启动。

这就类似咱们使用的windows,最开始win95,win98,win7启动速度极其的慢,从win8,开始win8.1,win10启动速度,快的yp...噌一下子就起来了。

Systemd 进程管理_systemd管理


什么是systemd

systemd即为system daemon守护进程,systemd主要解决上文的问题而诞生,systemd的目标是,为系统的启动和管理提供一套完整的解决方案。

systemd的优势

1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...) 2.CentOS7 支持开机并行启动服务,显著提高开机启动效率 3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次。 4.CentOS7服务的启动与停止不在使用脚本进行管理,也就是/etc/init.d下不在有脚本。 5.CentOS7使用systemd解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。

systemd相关的配置文件

/usr/lib/systemd/system #类似C6系统的启动脚本目录/etc/init.d/ 

/etc/systemd/system/ #类似C6系统的/etc/rc.d/rcN.d/ 

/etc/systemd/system/multi-user.target.wants/

systemd相关的命令

由于之前长期使用RHEL/CentOS 6系统, 已经习惯使用service chkconfig等命令来管理系统服务,但在RHEL/CentOS 7系统中是使用systemctl命令来管理服务的。

如下是RHEL/CentOS 6系统中System V init命令与RHEL/CentOS 7系统中systemctl命令的对比,后续课程中会经常用到它们。

systemctl管理服务的启动、重启、停止、重载、查看状态等常用命令

System V init(6系统)

systemctl命令(7系统)

作用

service crond start

systemctl start crond.service

启动服务

service crond stop

systemctl stop crond.service

停止服务

service crond restart

systemctl restart crond.service

重启服务

service crond reload

systemctl reload crond.service

重新加载配置(不终止服务)

service crond status

systemctl status crond.servre

查看服务运行状态


systemctl is-active sshd.service

查看服务是否在运行中


systemctl mask crond.servre

禁止服务运行


systemctl unmask crond.servre

取消禁止服务运行

systemctl设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令

System V init(6系统)

systemctl命令(7系统)

作用

chkconfig crond on

systemctl enable crond.service

开机自动启动

chkconfig crond off

systemctl disable crond.service

开机不自动启动

chkconfig --list

systemctl list-unit-files

查看各个级别下服务的启动与禁用

chkconfig --list crond

systemctl is-enabled crond.service

查看特定服务是否为开机自启动

chkconfig--add crond

systemctl daemon-reload

创建新服务文件或者变更设置

systemctl服务状态说明

服务状态

状态说明

loaded

服务单元的配置文件已经被处理

active(running)

服务的一个或多个进程在运行中

active(exited)

一次性运行的服务成功被执行并退出(服务运行后完成任务,相关进程会自动退出)

active(waiting)

服务已经运行但在等待某个事件

inactive

服务没有在运行

enable

服务设定为开机运行

disabled

服务设定为开机不运行

static

服务不能被设定开机启动,但可以由其他服务启动该服务

system的管理服务

# 启动服务
-#centos7
systemctl start 服务名
-#centos6
/etc/init.d/服务名 start

# 停止服务
-#centos7
systemctl stop 服务名
-#centos6
/etc/init.d/服务名 stop

# 重启服务
-#centos7
systemctl restart 服务名
-#centos6
/etc/init.d/服务名 restart

# 重新加载
-#centos7
systemctl reload 服务名
-#centos6
/etc/init.d/服务名 reload

# 检查服务的启动状态
-#centos7
systemctl status 服务名
-#centos6
/etc/init.d/服务名 status

# 判断服务是否在运行
systemctl is-active 服务名
返回:active是运行 unknow是没运行

# 禁用某个服务
systemctl mask 服务名

# 取消禁用服务
systemctl unmask 服务名