Linux systemd管理

                                                          Linux systemd管理

本章内容:

centos7启动

unit介绍

服务管理和查看

启动排错

破解口令

恢复grub2

 

systemd

系统启动和服务守护进程管理器,为系统的第一个进程,负责在系统启动或运行时,激活系统资源,服务进程和其它进程。

 

systemd新特性:

     系统引导时实现服务并行启动;

     按需启动守护进程;

     自动化的服务依赖关系管理;

     同时采用socket式和D-Busdesktop-Bus)总线式激活服务;

     socket:监听服务端口,服务并未启动,当有进程访问这个端口的服务时,socket采取激活端口对应的服务,相当于,centos6上的xinetd服务。

     D-Bus总线:系统中的图形工具都是基于D-Bus总线激活的。

     系统状态快照;

 

核心概念:unit

     unit表示不同类型的systemd对象,通过配置文件进行标识和配置,文件中主要包含了系统服务、监听socket、保护的系统快照以及其它与init相关的信息。

 

centos7:系统服务脚本文件路径:

      centos7的系统服务脚本文件的存放路径为/usr/lib/systemd/system,相当于centos6系统中的/etc/rc.d/init.d目录下的系统服务脚本文件。

     示例:

       [root@centos7 system]# cd /usr/lib/systemd/system

 

centos7:系统运行自产生的服务脚本存放路径:/run/systemd/system

     示例:

       root@centos7 system]# cd /run/systemd/system/

 

centos7:系统管理员自建立的系统服务执行脚本建议存放到:/etc/systemd/system目录下,此目录下的优先级要高于/usr/lib/systemd/system目录的优先级。

     示例:

       [root@centos7 system]# cd /etc/systemd/system/

 

unit类型:

     查看unit类型:

       systemctl   -t –typehelp

         示例:

           [root@centos7 cd]# systemctl  -t help

           Available unit types:

           service

           socket

           target

           device

           mount

           automount

           snapshot

           timer

           swap

           path

           slice

           scope

           [root@centos7 cd]#

        

      service unit:文件扩展名 .service,用于定义系统服务。

      target unit:文件扩展名 .target ,用于模拟实现“运行级别”。

      device unit:用于定义内核识别的设备。

      mount unit.mount,定义文件系统挂载点。

      socket unit.socket,用于标识进程间通信用的socket文件,也可以在系统启动时,延时启动服务,实现按需启动。

      snapshot unit.snapshot,管理系统快照。

      swap unit.swap,用于标识swap设备。

      automount unit.automount,文件系统的自动挂载点。

      path unit .path,用于定义文件系统中的一个文件或目录使用,长用于当文件系统变化时,延迟激活服务,如spool目录。

 

systemd关键特性:

       基于socket的激活机制:socket与服务程序分离;

       基于D-Bus的激活机制:

       基于device的激活机制:

       基于path的激活机制:

       系统快照:保存个unit的当前状态信息于持久存储设备中向后兼容sysv init 脚本。

       systemctl命令固定不变,不可扩展,systemctl是一个二进制程序,后跟的参数都是固定好的。

 

管理系统服务:

     命令:systemctl   COMMAND  name.service

     启动服务:systemctl  start name.service

     停止服务:systemctl  stop name.service

     重启服务:systemctl  restart name.service

     查看状态:systemctl  status name.service

     

     条件式重启:已启动才重启,否则不做任何操作。

        systemctl   try-restart  name.service

     

     重载或重启服务:先加载,在重启:

        systemctl   reload-or-restart  name.service

   

     重载或条件式重启服务:

        systemctl  reload-or-try-restart  name.service

 

      禁止自动和手动启动:

         systemctl mask name.service

        示例:

          [root@centos7 init.d]# systemctl mask httpd

          ln -s '/dev/null' '/etc/systemd/system/httpd.service'

          [root@centos7 init.d]# ll /etc/systemd/system/httpd.service

          lrwxrwxrwx. 1 root root 9 sep 27 05:02 /etc/systemd/system/httpd.service -> /dev/null

 

      取消禁止自动和手动启动:

          systemctl unmask name.service  

         示例:

           [root@centos7 init.d]# systemctl unmask httpd

           rm '/etc/systemd/system/httpd.service'

           [root@centos7 init.d]#

 

      查看某服务当前激活与否的状态:

           systemctl   is-active name.service

          示例:

           [root@centos7 system]# systemctl is-active  httpd

           active

           [root@centos7 system]#

 

      查看所有已激活的服务:

           systemctl   list-units  -t | –type  service

          示例:

            [root@centos7 system]# systemctl  list-units  -t service | wc -l

             74

            [root@centos7 system]#

 

       查看所有服务:

           systemct    list-units  -t service  -a|-all

 

       查看服务是否开机自启动:

            systemctl   is-enabled name.service

           示例:

             [root@centos7 system]# systemctl is-enabled  httpd

             disabled

             [root@centos7 system]#

 

       设定某服务开机自启动:

             systemctl  enable   name.servcie

           示例:

             [root@centos7 system]# systemctl enable  httpd

              ln-s'/usr/lib/systemd/system/httpd.service'

              '/etc/systemd/system/multi-user.target.wants/httpd.service'

             [root@centos7 system]#

  

        设定某服务开机禁止自启动:

              systemctl   disable  name.service

             示例:

              [root@centos7 system]# systemctl disable httpd.service

              rm '/etc/systemd/system/multi-user.target.wants/httpd.service'

              [root@centos7 system]#

 

        查看所有服务的开机自启状态:

               systemctl  list-unit-files  -type  service

    

        用来列出该服务在那些运行级别下启用和禁用:

              ls  /etc/systemd/system/*.wants/name.service

             示例:

              [root@centos7 system]# ls /etc/systemd/system/*.wants/httpd.service

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

              [root@centos7 system]#

        

       杀掉进程:

              systemctl   kill

 

服务状态:

systemctl   list-units-files  –type service  -all

 

loaded unit配置文件已经被加载过了;

activerunning):一次或多次持续处理的运行;

actionexited):成功完成一次性的配置;

activewaiting):运行中等待一个事件;

inactive:不运行;

enabled:开机自动;

disabled:开机不启动;

static:开机不启动,但可被另一个启用的服务激活;

 

运行级别:

target units

    unit配置文件:/usr/lib/systemd/system/*.target

  

     centos 6                     centos7

 

        runlevel0.target              poweroff.target

        runlevel1.target              rescue.target

        runlevel2.target              multi-user.target     

        runlevel3.target              multi-user.target

        runlevel4.target              multi-user.target

        runlevel5.target              graphical.target

        runlevel6.target              reboot.target

 

     切换运行级别:

         init #  ——–> systemctl   isolate   name.target

      注意:只有/usr/lib/systemd/system/*.target文件中allowisolate=yes才可以切换运行级别(修改文件需执行 systemctl   daemon-reload 才可以生效)

     示例:

        [root@centos7 system]# systemctl isolate multi-user.target

 

     查看target

       runlevel   who  -r  

       systemctl  list-units  -t  target

 

     查看系统的默认运行级别:

       systemctl   get-default

      示例:

        [root@centos7 Desktop]# systemctl get-default

        graphical.target

        [root@centos7 Desktop]#

 

     修改默认运行级别:

         systemctl   set-default  name.target

        示例:

         [root@centos7 Desktop]# systemctl set-default graphical.target

         rm '/etc/systemd/system/default.target'

         ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target'

         [root@centos7 Desktop]#

         [root@centos7 Desktop]# ls -l /etc/systemd/system/default.target

 

      切换至紧急救援模式:

           systemctl  rescue

  

      切换至emergency模式:

           systemctl   emergency

 

       其他常用命令: init poweroffreboot都成为systemctl的软链接

           关机:systemctl halt  systemctl poweroff

           重启:systemctl  reboot

           挂起:systemctl suspend

           休眠:systemctl hibernate

           休眠并挂起:systemctl hybrid-sleep

 

centos7启动引导顺序:

       UEFIBios初始化,运行POST开机自检。

       选择启动设备。

       引导装载程序,centos7是使用grub2

       加载程序的配置文件:/etc/grub2.cfg  /etc/default/grub  /boot/grub2/grub2/cfg

       加载initramfs驱动模块。

       加载内核选项。

       内核初始化,centos7使用systemd代替init

       执行initrd.target所有的单元,包括/etc/fstab

       initramfs根文件系统切换到磁盘根目录。

       systemd执行默认target配置,配置文件/etc/systemd/default.target  /etc/systemd/system

       systemd执行sysinit.target初始化系统及basic.target准备操作系统。

       systemd启动multi-user.target下的本机与服务器服务。

       systemd启动multi-user.target/etc/rc.d/rc/local

       systemd启动multi-user.targetgetty.target及登录服务。

       systemd执行graphical需要的服务。

 

service unit 文件格式:

       /etc/systemd/system:系统管理员和用户使用。

       /usr/lib/systemd/system:发行版打包者使用。

       #”开头的行后面的内容会被认为是注释。

       相关的布尔值,1yesontrue都是开启,0noofffalse都是关闭。

       时间单位默认是秒,所以要用毫秒(ms)分钟(m)等请显是说明。

       service unit file文件通常由三部分组成:

       [Unit]:定义与unit类型无关的通用选项;由于提供unit的描述信息、unit行为及依赖关系等。

       [Service]:定义有“system enable”以及“systemctl disable”命令在实现服务启用或禁用时用到的一些选项。

       Unit段的常用选项:

          Description:描述信息

          After:定义unit的启动次序,表示当前unit应该晚于那些unit启动,其功能与Before相反。

          Requires:依赖到的其他unit,强依赖,被依赖的units无法激活时,当前unit即无法激活。

          Wants:依赖到的其他units,弱依赖。

          Centos:定义units间的冲突关系。

       Service段的常用选项:

          Type:定义影响execstart及相关参数的功能的unit进程启动类型

          simple:默认值,这个daemon主要由execstart接的指令串来启动,启动后常驻于内存中

          forking:由execstart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务。原生父程序在启动结束后就会终止

         oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中。

         dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作,因此通常也要同时设定busname=才行。

          notify:在启动完成后会发送一个通知消息。还需要配合notifyaccess来让systemd接受消息。

          idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才执行即可的服务。

          Environmentfile:环境配置文件。

          Execstart:指明启动unit要运动命令或脚本的绝对路径。

          ExecstartpreExecstart前运行。

          ExecstartpostExecstart后运行。

          Restart:当设定Restart=1时,则当次daemon服务以外终止后,会再次自动启动此服务。

       Install段的常用选项:

          Alias:别名,可使用systemctl command alias.service

          Requiredby:被哪些units所依赖,强依赖。

          Wantdby:被哪些units所依赖,弱依赖。

          Also:安装本服务的时候还要安装别的相关服务。

注意:对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载配置文件,而后可以选择重启

       执行 systemctl  daemon-reload

         

设置内核参数:

      设置内核参数,只影响当次启动。

      启动时,在Linux16行后添加systemd.unit=desired.target

      systemd.unit=emergency.target

      systemd.unit=recure.target

      recure.targetemergency支持更多的功能,例如日志。

示例:

  Linux16行最后添加:systemd-unit=multi-user.target,系统启动后进入到字符界面。

 

文件系统损坏:

      先尝试自动修复,失败则进入emergency shell,提示用户修复。

      /etc/fstab不存在对应的设备和UUID等一段时间,如不可用,进入emergency shell

      /etc/fstab不存在对应挂载点,systemd尝试创建挂载点,否则提示进入emergency shell

      /etc/fstab不正确的挂载选项,提示进入emergency shell

 

破解root口令:

     1)启动时在看到grub启动菜单时,按任意键暂停启动;

     2)按“e”键进入编辑模式;

     3)将光标移动到Linux16开始的行,在行尾添加内核参数:rd.break

     4)按ctrl-x启动,进入到类似于单用户的shell中。

     5)进来之后执行mount命令查看系统根所挂载的目录

     6)执行mount  -o remount,rw  /sysroot以读写方式冲洗挂载系统根“/sysroot

     7)执行chroot  /sysroot

     8)执行passwd  root

     9)执行 touch /.autolabel重新给/etc/shadow文件打标签,不然selinux策略会阻止启动,造成启动故障。

 

修该grub2配置文件:

      centos7中的grub主配置文件/boot/grub2/grub.cfg

      grub.cfg文件的配置模板:/etc/default/grub

      修改好的模板文件参数使用 grub2-mkconfig  -o  /boot/grub2/grub.cfg重定向到grub主配置文件中。

    

修复grub

BIOS环境:grub2-install  /dev/sda

UEFI环境:grub2-install

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

           

   

原创文章,作者:zhengyibo,如若转载,请注明出处:http://www.178linux.com/49570

(0)
zhengyibozhengyibo
上一篇 2016-09-28
下一篇 2016-09-28

相关推荐

  • 优云Web新功能发布,邀您在线免费体验!

    你是否还在因为无法通过大数据精准分析需求而烦恼? 你是否还在因为无法直观呈现用户的行为而头大? 你是否还在因为怎么优化页面布局而愁眉苦脸? 正所谓“一图胜千言”,一张色彩缤纷的图片甚至可以给人带来意想不到的收获,优云web作为监控利器,其新功能“热图”可以为您解决这些麻烦! 热图作为优云web的特色功能点,究竟是怎样帮助您更好地了解用户行为的呢,让小编给您一…

    系统运维 2017-01-09
  • RAID级别介绍

    raid分为软raid和硬raid,一般公司使用硬raid,数据无价。 存数据都是先存到内存,后同步到硬盘,为提高raid卡的性能会在raid嵌入内存颗粒。 但是问题是断电后内存的数据没有同步到硬盘会丢失,这样就会有raid卡电池。(raid卡必须有raid电池) 计算机只识别raid卡,不会识别raid卡下有几块硬盘 raid 0:  (条带式)…

    Linux干货 2016-03-22
  • 一起学WINS系列(三)界面、概览

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/159542 上节我们讨论了有关WINS服务器的安装,本节将开始讨论WINS配置等内容。 一般情况下,我们可以在控制面板的管理工具中找到WINS,或者在【运行】内…

    Linux干货 2015-03-25
  • PageRank算法

    1. PageRank算法概述          PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名。         是Google创始人拉里·佩奇和谢尔盖·布林于1997年构建早期的…

    Linux干货 2015-12-15
  • X-Y Problem

    X-Y Problem 对于X-Y Problem的意思如下: 1)有人想解决问题X2)他觉得Y可能是解决X问题的方法3)但是他不知道Y应该怎么做4)于是他去问别人Y应该怎么做? 简而言之,没有去问怎么解决问题X,而是去问解决方案Y应该怎么去实现和操作。于是乎: 1)热心的人们帮助并告诉这个人Y应该怎么搞,但是大家都觉得Y这个方案有点怪异。2)在经过大量地讨…

    Linux干货 2016-08-15
  • 2016全球运维大会,优云蒋君伟演讲“CMDB+自动化的管理融合”成一大亮点

    2016全球运维大会于9月23日-24日在上海盛大开幕。作为国内运维行业的重量级大会,优云产品总监蒋君伟在自动化专场与来自全国各地的运维同行一起探讨、分享业内自动化运维的最佳实践。现场情绪热烈,气氛高涨,成为了本届全球运维大会的一大亮点。 全新梳理自动化与CMDB的融合之道 全球运维大会当天,运维自动化专场很多大牛针对自动化运维管理中的CMDB进行了激烈的讨…

    Linux资讯 2016-12-05