• 鸟哥的Linux私房菜


    service&daemon

    执行等级的分类

    上面说到 init 是开机后核心主动调用的, 然后 init 可以根据使用者自订的执行等级 (runlevel) 来唤醒不同的服务,以进入不 同的操作界面。基本上 Linux 提供 7 个执行等级,分别是 0, 1, 2...6 , 比较重要的是 1)单人维护模式、3)纯文本模式、5) 文字加图形界面。而各个执行等级的启动脚本是通过 /etc/rc.d/rc[0-6]/SXXdaemon 链接到 /etc/init.d/daemon , 链接文件名 (SXXdaemon) 的功能为: S为启动该服务,XX是数字,为启动的顺序。由于有 SXX 的设置,因此在开机时可以“依序执 行”所有需要的服务, 同时也能解决相依服务的问题。这点与管理员自己手动处理不太一样就是了。

    systemd使用的unit分类

    将多个 daemons 集合成为一个群组: 如同 systemV 的 init 里头有个 runlevel 的特色,systemd 亦将许多的功能集合成为一个所谓的 target 项目,这个项目主要在设 计操作环境的创建, 所以是集合了许多的 daemons,亦即是执行某个 target 就是执行好多个 daemon 的意思!

    systemd 的配置文件放置目录

    /usr/lib/systemd/system/:每个服务最主要的启动脚本设置,有点类似以前的 /etc/init.d 下面的文件; /run/systemd/system/:系统执行过程中所产生的服务脚本,这些脚本的优先序要比 /usr/lib/systemd/system/ 高! /etc/systemd/system/:管理员依据主机系统的需求所创建的执行脚本,其实这个目录有点像以前 /etc/rc.d/rc5.d/Sxx 之类的功 能!执行优先序又比 /run/systemd/system/ 高喔!

    daemon状态

    好!再回到 systemctl status atd.service 的第三行,不是有个 Active 的 daemon 现在状态吗?除了 running 跟 dead 之外, 有没有其他的状态呢?有的~基本上有几个常见的状态: active (running):正有一只或多只程序正在系统中执行的意思,举例来说,正在执行中的 vsftpd 就是这种模式。 active (exited):仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行。 举例来说,开机或者是挂载时才会进 行一次的 quotaon 功能,就是这种模式! quotaon 不须一直执行~只须执行一次之后,就交给文件系统去自行处理啰!通常用 bash shell 写的小型服务,大多是属于这种类型 (无须常驻内存)。 active (waiting):正在执行当中,不过还再等待其他的事件才能继续处理。举例来说,打印的伫列相关服务就是这种状态! 虽然正在启动中,不过,也需要真的有伫列进来 (打印工作) 这样他才会继续唤醒打印机服务来进行下一步打印的功能。 inactive:这个服务目前没有运行的意思。 既然 daemon 目前的状态就有这么多种了,那么 daemon 的默认状态有没有可能除了 enable/disable 之外,还有其他的情 况呢?当然有!
    enabled:这个 daemon 将在开机时被执行 disabled:这个 daemon 在开机时不会被执行 static:这个 daemon 不可以自己启动 (enable 不可),不过可能会被其他的 enabled 的服务来唤醒 (相依属性的服务) mask:这个 daemon 无论如何都无法被启动!因为已经被强制注销 (非删除)。可通过 systemctl unmask 方式改回原本状态

    服务相依性

    上面这个范例的练习在让您了解一下,很多服务彼此之间是有相依性的!cups 是一种打印服务,这个打印服务会启用 port 631 来提供网络打印机的打印功能。 但是其实我们无须一直启动 631 端口吧?因此,多了一个名为 cups.socket 的服务,这个 服务可以在“用户有需要打印时,才会主动唤醒 cups.service ”的意思! 因此,如果你仅是 disable/stop cups.service 而忘记了其他两 个服务的话,那么当有用户向其他两个 cups.path, cups.socket 提出要求时, cups.service 就会被唤醒!所以,你关掉也没用!

    隔离target操作环境

    要注意,改变 graphical.target 以及 multi-user.target 是通过 isolate 来处理的!鸟哥刚刚接触到 systemd 的时候,在 multi- user.target 环境下转成 graphical.target 时, 可以通过 systemctl start graphical.target 喔!然后鸟哥就以为关闭图形界面即可回到 multi-user.target 的!但使用 systemctl stop graphical.target 却完全不理鸟哥~这才发现错了...在 service 部份用 start/stop/restart 才 对,在 target 项目则请使用 isolate (隔离不同的操作模式) 才对!

    系统环境切换

    suspend:暂停模式会将系统的状态数据保存到内存中,然后关闭掉大部分的系统硬件,当然,并没有实际关机喔! 当使用者 按下唤醒机器的按钮,系统数据会重内存中回复,然后重新驱动被大部分关闭的硬件,就开始正常运行!唤醒的速度较快。 hibernate:休眠模式则是将系统状态保存到硬盘当中,保存完毕后,将计算机关机。当使用者尝试唤醒系统时,系统会开始正 常运行, 然后将保存在硬盘中的系统状态恢复回来。因为数据是由硬盘读出,因此唤醒的性能与你的硬盘速度有关

  • 相关阅读:
    vuex2 mapActions 报错 `unknown action type: xxxx`
    IE报vuex requires a Promise polyfill in this browser问题解决
    vue路由懒加载
    vue-router各个属性的作用及用法
    JS实现继承的几种方法
    ES6学习笔记--promise对象
    jQuery--data()方法
    原生js实现二级联动下拉列表菜单
    sql server中部分函数功能详解
    js中字符串转换为数值的两种方法的区别
  • 原文地址:https://www.cnblogs.com/mayiyi/p/14345574.html
Copyright © 2020-2023  润新知