在CentOS7(RHEL7)以后,服务从原来的由systemV管理机制升级到了systemd。

在sysV中,所有的服务脚本都放在/etc/rc.d/init.d/中,可以使用/etc/rc.d/init.d/daemon [start|stop|restart|reload|status]方式来管理服务,默认的运行级别在/etc/inittab文件中定义,当系统以某个运行级别启动时,会运行/etc/rc.d/rcN.d/(其中N范围为0~6)目录中所有的脚本,而这些脚本的命名都是Knnxxxxx或Snnxxxxx,其中S表示系统启动时调用,K表示系统终止时调用,nn是00~99的数字,数字的大小决定了脚本运行的顺序,最后的xxxxx为脚本的名称(长度任意),这些目录里的文件都是指向init.d目录中脚本的软连接,因为各个运行级别的所需的服务可能存在交集,所以这样能节省硬盘使用空间。

在sysV中,服务被分成两大类,一类是可独立运行的服务,另一类是受xinetd管理的服务,而xinetd本身是一个独立运行的服务,用来负责管理一些不常用的服务,当这些服务需要被使用时,由xinetd来唤醒它们,当服务使用完后,这些服务会被结束以减少系统资源的占用。

在sysV中,定义了6个运行级别,分别是:

runlevel0 = 关机

runlevel1 = 单用户模式,仅root

runlevel2 = 带网络的单用户模式

runlevel3 = 多用户模式,字符界面,标准模式

runlevel4 = 保留

runlevel5 = 多用户模式,图形界面,X11(X Window)

runlevel6 = 重启

上文中提到的文件和目录的截图:(RHEL7)

/etc/inittab:

/etc/rc.d/:(rc.local是一个脚本文件,里面定义了用户自定义启动的程序)

/etc/rc.d/rc.local:

/etc/rc.d/init.d/:(文件functions定义了很多函数,供给本目录里的脚本调用,而文件README是一个说明文件,主要说明“现在的服务由systemd管理,不再推荐使用这些脚本”,剩下的文件都是对应服务的脚本文件)

/etc/rc.d/rc3.d/:

在systemd中,所有的服务脚本都称为unit,主要分成6类:.service, .socket, .target, .path, snapshot, .timer,它们都存放在/usr/lib/systemd/system/目录中。

在systemd中,统一采用systemctl命令来管理所有的服务,主要用法:

systemctl [start|stop|restart|reload|status|is-active|is-enable|enable|disable|mask|umask] 服务名.类型  (当服务为servce类型时可以省略类型,如atd.service可以简写为atd,其他的类型不能省略,如talnet.socket)

systemclt set-default|get-default|isolate xxxxx.target 设置默认运行级别|获取当前的默认运行级别|不重启切换当前环境  (什么是环境呢,target类型的服务都为环境,当运行或切换(需要使用isolate而不能使用start)一个环境时往往会伴随着启动很多其他的服务用以支持这个环境,最常见的环境就是字符界面和图形界面,比如想从现在的字符界面临时切换到图形界面,使用systemctl isolate graphical.tatget)

在systemd中,运行级别由/etc/systemd/system/default.target定义,这个文件本身是一个软连接,如果它指向graphical.targer那么默认的运行级别就是图形界面。

在systemd中,为了向下兼容也提供了一些target来映射sysV中的运行级别,见下图,

会发现,有一些以.wants结尾的目录,上文已经说过了环境的变化往往会伴随着很多其他服务,而wants目录就是当target类型的服务切换之后自动运行的其他服务。

利用systemctl查看服务:

systemctl 列出所有已启动的服务

systemctl list-units 同上

systemctl list-units --all 列出所有服务,包括没启动的

systemctl list-unit-files 列出/usr/lib/systemd/system/目录内所有的服务文件

systemctl list-units --type=service --all 列出所有service类型的服务,其中--type的取值还可以是target,socket等等

systemctl list-units --type=service --all|grep -i cpu 列出所有和cpu相关的服务

利用systemctl快速改变环境:

systemctl poweroff 关机(相当于systemctl isolate poweroff.target)

systemctl reboot 重启

systemctl suspend 暂停/睡眠,将系统数据写入内存,同时将大部分硬件关闭,等待唤醒(相当于Windows下的睡眠)

systemctl hibernate 休眠,将系统数据写入硬盘,然后关机

systemctl rescue 进入救援模式

systemctl emergency 进入紧急模式,比救援模式更强更彻底

对systemV和systemd的简单理解(服务方面)的更多相关文章

  1. mDNS原理的简单理解——每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的IP地址是多少

    MDNS协议介绍 mDNS multicast DNS , 使用5353端口,组播地址 224.0.0.251.在一个没有常规DNS服务器的小型网络内,可以使用mDNS来实现类似DNS的编程接口.包格 ...

  2. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  3. [转]简单理解Socket

    简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html  题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...

  4. 【阿里云产品公测】简单日志服务SLS使用评测 + 教程

    [阿里云产品公测]简单日志服务SLS使用评测 + 教程 评测介绍 被测产品: 简单日志服务SLS 评测环境: 阿里云基础ECS x2(1核, 512M, 1M) 操作系统: CentOS 6.5 x6 ...

  5. [svc]简单理解什么是rpc调用?跟restapi有何区别?

    什么是rpc调用 restapi调用方式是对数据的crud. 常见的我们写flash写个api,或者借助django drf写个标准的resetapi,一个url可以借助httpget post pu ...

  6. 简单理解Zookeeper的Leader选举【转】

    Leader选举是保证分布式数据一致性的关键所在.Leader选举分为Zookeeper集群初始化启动时选举和Zookeeper集群运行期间Leader重新选举两种情况.在讲解Leader选举前先了解 ...

  7. 简单理解php的socket连接

    socket建立套接的过程图: 首先了解socket 几个主要函数: socket的关键函数1: socket_create($net参数1,$stream参数2,$protocol参数3) 作用:创 ...

  8. 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制

    [原创]分布式之数据库和缓存双写一致性方案解析(三)   正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...

  9. input屏蔽历史记录 ;function($,undefined) 前面的分号是什么用处 JSON 和 JSONP 两兄弟 document.body.scrollTop与document.documentElement.scrollTop兼容 URL中的# 网站性能优化 前端必知的ajax 简单理解同步与异步 那些年,我们被耍过的bug——has

    input屏蔽历史记录   设置input的扩展属性autocomplete 为off即可 ;function($,undefined) 前面的分号是什么用处   ;(function($){$.ex ...

随机推荐

  1. apache commons lang架包介绍

    commons lang组件介绍和学习 介绍 Java语言开发时有一个隐患,那就是java支持null值,这就导致很多时候操作可能会出异常. 因此很多第三方组件都会提供安全null safe 操作(即 ...

  2. java web轻量级开发面试教程

    最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备 在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间.我的标准其实不复杂:第一能干活,第二 ...

  3. make:yacc/lex:command not be found

    1.使用./build编译boa-0.94.13时出现make:yacc:command not be found 解决方法:apt-get install -y byacc 2.出现make:lex ...

  4. Appium(一):java环境、AndroidSDK环境

    1. java环境 java的下载和安装可以看我以前写的Java基础:<java下载和安装>. 2. AndroidSDK环境 2.1 AndroidSDK下载 我们进入:https:// ...

  5. 九、ITK-VTK混合编程--将序列dcm图像通过ITK读去并通过VTK显示出来

    一.初步介绍 上一个博客里面我记录了VTK的安装,以及相关的工程代码的构建,但是实际上上一个博客测试的代码的例子仅仅只是VTK程序的例子.而我实际上希望能够实现的是VTK和ITK混合编程. 在这里还是 ...

  6. Redis令牌桶限流

    一 .场景描述 在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制.比如对于某个 用户,他在一个时间段(interval ...

  7. php 重复问题

    结果: 结论: 尽量在方法内用变量去接受重复的参数或重复的方法/结果,消耗的时间积少成多

  8. JavaWeb中验证码校验的功能实现

    后台生成验证码工具方法 /* * 设置图片的背景色 */ public static void setBackGround(Graphics g, int WIDTH, int HEIGHT) { / ...

  9. 【ZJOI 2014】力

    Problem Description 给出 \(n\) 个数 \(q_i\),给出 \(F_j\) 的定义如下: \[F_j=\sum_{i<j} \frac{q_iq_j}{(i-j)^2} ...

  10. javaWeb核心技术第十二篇之分页和条件

    分页:limit ?,? 参数1 : startIndex 开始索引. 参数2 : pageSize 每页显示的个数 n 表示第几页 给定一个特殊的单词 pageNumber select * fro ...