systemd的由来
Linux一直以来都采用init进程作为老大,但是init有两个缺点: 1.启动时间长,init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。 2.启动脚本复杂,初始化完成后,系统会加载很多脚本,脚本都会处理各自的情况,这回让脚本多而复杂。
CentOS5 是启动速度最慢的,串行启动过程,无论进程相互之间有无依赖关系。 CentOS6 相对启动速度有所改进,有依赖的进程之间依次启动而其他没有依赖关系的则并行启动。 CentOS7 所有进程无论有无依赖关系,都并行启动,当然有很多时候进程并没有真正的启动而是只有一个信号或者说是标记,在真正利用的时候,才会真正启动。
这就类似咱们使用的windows,最开始win95,win98,win7启动速度极其的慢,从win8,开始win8.1,win10启动速度,快的yp...噌一下子就起来了。
什么是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 服务名