设为首页 收藏本站
查看: 696|回复: 0

[经验分享] CentOS7系统——systemd特性

[复制链接]

尚未签到

发表于 2018-4-25 06:32:06 | 显示全部楼层 |阅读模式
  一、init发展史:
  Centos 5 :SysV init
  Centos 6 :Upstart
  Centos 7 :Systemd
  

  二、Systemd的特性:
  1,系统引导时实现服务并行启动
  2,按需启动守护进程
  3,自动化的服务依赖关系管理
  4,同时采用D-Bus总线式和Socket式激活服务
  5,系统状态快照
  

  三、核心概念:unit
  unit由基于相关配置文件进行标识,识别和配置;文件中主要包含了系统服务、监听的socket、保存的快照以及其它init相关的信息,这些配置文件主要保存在:
  /usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
  /run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行
  /etc/systemd/system:管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行
  

  四、unit常见类型:
  Service unit:文件扩展名为.service,用于定义系统服务
  Target unit:文件扩展名为.target,用于模拟运行级别
  Device unit:文件扩展名为.device,用于定义内核识别的设备
  Mount unit:文件扩展名为.mount,定义文件系统挂载点
  Socket unit:文件扩展名为.socket,用于标识进程间通信用到的socket文件,也可在系统启动时,延迟启动服务,实现按需启动
  Swap unit:文件扩展名为.swap,用于标识swap设备
  Snapshot unit:文件扩展名为.snapshot,用于管理系统快照
  Path unit:文件扩展名为.path,用于定义文件系统中的一个文件或目录,常用于当文件系统变化时,延迟激活服务,如:spool 目录
  Automount unit:.automount,文件系统的自动挂载点
  

  五、关键特性:
  1,基于socket的激活机制,socket与服务程序分离
  2,基于d-bus激活机制
  3,基于device的激活机制
  4,基于path的激活机制
  5,系统快照,保存unit的当前状态信息持久存储设备中
  6,向后兼容SysV init脚本:/etc/init.d
  

  六、Systemd也有不兼容的情况:
  service的脚本格式不完全固定,可以添加
  直接使用程序本身的可执行程序启动的服务,使用service命令可以探测到工作状态并进行管理
  systemctl的unit格式是固定不变的,不可以自行添加格式
  非由systemd启动的服务,systemctl无法控制此服务
  (可以自行编写unit脚本,就可以使用systemctl进行管理了)
  

  七、Centos 7 service类型的systemctl命令
    1、systemctl [option] COMMAND [name]
  启动:service service-name start=>systemctl start service-name
  停止:service service-name stop=>systemctl stop service-name
  重启:service service-name restart=>systemctl restart service-name
  查看状态:service service-name status=>systemctl status service-name
  查看unit类型:Systemctl –t help
  条件式重启:service service-name condrestart=>systemctl try-restart service-name
  重载或重启:systemctl reload-or-restart service-name
  重载或条件重启:systemctl reload-or-try-restart service-name
  

    2、状态相关命令:
  查看所有服务:systemctl list-units -t service -a
  只查看服务单元的状态:systemctl -t service
  查看某服务当前激活与否的状态:systemctl is-active service-name
  查看已激活的所有服务:systemctl list-units -t service
  列出失败的服务:systemctl --failed -t service
  查看所有服务的开机自启状态:chkconfig --list ==> systemctl list-unit-files -t service
  查看服务是否开机自启:systemctl is-enabled name.service
  

  设置服务开机自启:chkconfig service-name on=>systemctl enable service-name
  禁止服务开机自启:chkconfig service-name off=>systemctl disable service-name
  禁止服务设定为开机自启:systemctl mask service-name
  取消禁止服务设定为开机自启:systemctl umask service-name
  查看某服务的依赖关系:sysemctl list-dependencies service-name
  杀掉进程:systemctl kill 进程名
  

    3、服务状态指示
  systemctl list-units -t service -a 显示所有服务状态
  loaded:Unit配置文件已处理
  active(running):一次或多次持续处理的运行
  active(exited):成功完成一次性的配置
  active(waiting):运行中,等待一个事件
  inactive:不运行
  enabled:开机启动
  disabled:开机不启动
  static:开机不启动,但可被另一个启用的服务激活
  

  八、管理target units
  1、运行级别:0-6
  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
  

  2、级别查看及切换:
  级别切换:init N=>systemctl isolate name.target
  注意:只有当前target文件中AllowIsolate=yes才能切换
  级别查看:runlevel=>systemctl list-units -t target
  查看所有级别:systemctl list-units -t target -a
  查看默认运行级别:systemctl get-default
  修改默认运行级别:systemctl set-default name.target
  

  切换至救援模式:systemctl rescuce
  切换至紧急模式:systemctl emergency
  驱动安装有问题时,可以进入此模式卸载驱动(最简洁的模式)
  

  3、其它常用命令:

  关机:systemctl poweroff|halt
  重启:systemctl reboot
  挂起:systemctl suspend
  快照:systemctl hipernate
  快照并挂起:systemctl hybrid-sleep
  

  九、service unit文件
  1、通常由三部分组成:

  [unit]:定义与unit类型无关的通用选项,用于提供unit的描述信息、unit行为及依赖关系等
  [service]:定义与特定类型相关的专用选项,此处为service类型
  [Install]:定义由"systemctl enable"以及"systemctl disable"命令实现服务启用或禁用时用到的一些选项
  

  2、unit段的常用选项:
  Description:描述信息,意义性描述
  After:定义unit的启动顺序,表示当前unit应该晚于哪些unit启动,其功能与before相反
  Requies:依赖到的其它unit,强依赖,被依赖的unit无法激活时,当前unit就无法激活
  Wants:依赖的其它unit,弱依赖,被依赖的unit无法激活时,当前unit仍然可以激活
  Conflicts:定义unit间的冲突
  

  3、service段的常用选项:
  Type:用于定义影响ExecStart及相关参数的功能的unit进程启动类型
  simple:默认值,这个daemon主要由ExecStart接的指令串来启动,启动后常驻于内存中
  forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务。原生父程序在启动结束后就会终止
  oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中
  dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作.因此通常也要同时设定BusNname= 才行
  notify:在启动完成后会发送一个通知消息。还需要配合NotifyAccess 来让 Systemd 接收消息
  idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才执行即可的服务
  Environmentfile:环境启动文件
  ExeStart:启动unit要运行的命令或脚本
  ExeStartPre:启动unit之前预先运行的命令或脚本
  ExeStartPost:启动unit之后要运行的命令或脚本
  ExeStop:停止unit后要运行的命令或脚本
  Restart:重启unit后要运行的命令或脚本
  

  4、Install段的常用选项:
  Alias:当前unit的别名
  RequiredBy:被哪些unit所依赖,强依赖
  WanteBy:被哪些unit所依赖,弱依赖
  Also:安装本服务时还要安装哪些相关服务
  

  注意:对于新建的unit文件或修改后的unit文件,需要通知systemd重载此配置文件
    重载命令:systemctl daemon-reload

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-451530-1-1.html 上篇帖子: CentOS 上安装高版本PHP 下篇帖子: centos7 搭建ntp服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表