• Linux19:服务


    服务

    服务的分类

    RPM包服务和源码包安装服务的区别很多,启动和设置都不同,这种差异主要在于安装时RPM包会选择默认位置,卸载时也有专门的命令;而源码包一般安装在/usr/local/,卸载时也只需要删除文件。

    独立的服务是将服务直接注册在内存中,用户访问服务,服务响应,好处是响应较快,但需要占用内存。基于xinetd服务是由一个独立服务xinetd管理的,用户访问被管理的服务需要首先访问xinetd,再访问具体服务,好处是不需要太多内存,但响应速度慢。

    查看RPM包服务的自启动状态(所有的服务都会列出,它也可以用来查询系统中所有安装的RPM服务):

    如果2 3 4 5任意一个是启用,说明该服务会随着服务器启动而启动,但是不代表现在该服务就是运行的。

    查看服务是否运行:ps aux,列出的服务就是运行中的。

    还可以查看netstat -tlun查看端口使用情况,如果该服务运行会开启端口,可以根据端口情况判断服务是否启动。

    服务常用各文件(启动、配置文件、数据文件、日志等)位置:

    独立服务

    独立服务的启动、关闭、重启、查看状态:

    /etc/init.d/独立服务名 start|stop|status|restart|

    service 独立服务名 start|stop|restart|status(后者是redhat专有的命令,和第一个作用相同)

    status代表查看服务的状态,同时查看占用的进程号。

    查询所有独立服务的状态:service --status-all

    独立服务设置自启动有三种方法:

    1、chkconfig --level 2345 [独立服务] [on|off]可以关闭或开启自启动。

    2、修改/etc/rc.d/rc.local文件,这个文件中的命令会在登录前执行,只要加上对应服务启动的命令,下次开机就会自动启动服务。(推荐该方法,如果所有自启动设置都总结在该文件中,查看较方便,可以避免不同安装方式的相同服务启动两次),这个文件还可以写入环境变量的修改,但是优先级较低。

    3、执行ntsysv命令,会出现图形化界面,在想自启动的服务前加上*即可。(这个方法可以同时管理独立服务和xinetd服务)

    基于xintd服务

    想要使用基于xintd服务,必须先安装xintd,再安装基于此的服务。

    启动方法,以telnet服务为例,修改文件/etc/xinetd.d/telnet,将disable=yes改为no,保存后重启xintd服务:

    service xinetd restart,这样就能完成启动。

    自启动方法有两个:

    1、chkconfig telnet on

    2、执行ntsysv命令

    xintd服务的启动和自启动是相通的,开启服务会自动开启自启动,开启自启动服务会自动启动。

    源码包服务

    源码包服务启动时应该使用绝对路径启动脚本/usr/local/apache2/bin/apachectl start|stop,不同的服务脚本名也不同,此时需要查看安装说明查看启动脚本的方法。

    源码包服务的自启动也需要在/etc/rc.d/rc.local文件中加入启动命令。

    如果想让service命令也能管理源码包服务,需要在service命令扫描的目录下添加一个链接文件,以apache服务为例:

    ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache但是这样做会弄混两种服务,因此不建议。

    service服务也可以被chkconfig与ntsysv命令管理自启动,此时需要修改新建的链接文件/etc/init.d/apache,在首行下加入两句话:

    # chkconfig: 35 86 76
    # description: source package apache
    

    三个数字分别是运行级别,启动顺序和关闭顺序。两个顺序数字不能和其他服务重合,查看/etc/rc.d/中有rc0.d、rc1.d。。。rc6.d文件,对应6个运行级别,应该查看rc3.d文件中的顺序,然后再进行设置。最后把源码包apache加入chkconfig命令:chkconfig --add apache

    服务管理总结

    systemd管理的特点

    CentOS7的新的systemd弃用了原来的init启动脚本的方法,init的管理机制有如下几个特点:

    1、服务启动脚本都放在/etc/init.d/下

    2、服务被分成独立启动的服务和基于xinetd或inetd的服务两种

    3、服务存在相依性问题,需要管理员手动解决

    4、存在执行等级的分类,可以根据用户自定义的执行等级来唤醒不同的服务,直接执行init 5就能切换

    5、用chkconfig命令来管理自启动

    新的systemd管理机制的特点:

    1、systemd可以让所有服务同时启动,系统启动的速度变快了

    2、服务不再区分,统一由systemd指令来管理

    3、服务相依性自动检测

    4、systemd定义所有的服务为一个服务单位(unit),并将该unit归类到不同的服务类型(type)中,systemd将服务unit区分为多种type,包括service、socket、target等

    5、systemd可以兼容旧的init脚本

    6、systemd也有一个类似于runlevel的设计,systemd将许多功能集合整合成一个target项目,通过执行该target来执行好多个服务。

    新的systemd也有一些弊端:

    1、runlevel并没有做到完全对应

    2、新的systemd全部用systemctl这个管理程序管理,systemctl不可自定义参数

    3、没有用systemctl启动的服务,systemd无法监测到

    4、systemd启动过程中无法与管理员进行交互,自行编写启动设定时应该取消互动机制

    systemd相关目录和unit类型

    systemd将服务执行脚本称为一个服务单位unit,每种服务根据功能来划分成多种type,相关的配置文件主要放在:

    1、/usr/lib/systemd/system/:每个服务最主要的启动脚本设定

    2、/run/systemd/system/:系统执行过程中产生的服务脚本,优先序比上一个目录高

    3、/etc/systemd/system/:管理员根据主机需求所建立的执行脚本,执行优先序比上一个高

    4、/etc/sysconfig/*:服务初始化的一些设置会放在该目录

    5、/var/lib/:一些产生数据的服务会将数据写入该目录中,如数据库文件

    6、/run/:服务暂存档的位置

    7、/usr/share/doc/:相关服务信息、软件配置和说明

    系统开机到底会不会执行某些服务要看/etc/systemd/system/底下的设定,该目录下是一大堆连结档,实际执行的脚本都是放在/usr/lib/systemd/system/中。

    unit类型可以通过看/usr/lib/systemd/system/下文件的扩展名来分辨:

    socket服务会产生一些socket file,查找所有的socket file:systemctl list-sockets

    systemd管理服务和查看服务

    查看服务状态:systemctl status atd.service
    结果的第二行会显示服务的预设状态,enable为开始自动执行,disabled为开机时不会被执行,static为该服务不可以自启动,需要其他服务唤醒,mask为该服务已经被强制注销。

    结果的第三行会显示服务目前的状态,active(running)为该服务的一只或多只程序正在运行,active(exited)为仅执行一次就正常结束的服务,如开机、挂载或自定义脚本,active(waiting)为正在执行中,但是需要等待其他事件,inactive为服务没有运作。

    正常关闭服务:systemctl stop atd.service

    开启服务:systemctl start 服务

    设置开机启动/开机不启动:systemctl enable/disable 服务

    注销服务/恢复正常:systemctl mask/unmask 服务

    列出系统上所有启动的unit:systemctl

    列出所有已经安装的unit:systemctl list-unit-files

    只列出service这种类别的服务:systemctl list-units --type=service --all

    不同的操作环境target unit

    主要的操作环境相关的target unit主要有以下几个:

    1、multi-user.target:纯文本模式

    2、graphical.target:文字加图形界面

    3、救援模式rescue.target和emergency.target

    查看默认的模式:systemctl get-default

    设置默认的模式:systemctl set-default multi-user.target

    在不重新启动的情况下,将目前的操作环境改为纯文本模式:systemctl isolate multi-user.target

    systemd提供了一些简单的切换命令:

    暂停模式和休眠模式的区别:暂停模式是将系统的数据保存在内存,然后不关机,唤醒后重新加载;休眠模式是将系统的数据保存在硬盘中,然后关机,重新启动后把数据从硬盘中读出。

    各服务的依赖性检查

    列出所有的服务依赖性:systemctl list-dependencies,一行稍靠前的部分是服务A,靠后是服务B,列出的信息表示服务A用到了一系列服务B,这类关系还可以反向查看,也就是哪些服务用到我:systemctl list-dependencies --reverse

    查看单一服务的依赖性,如查看graphical.target用到了哪些服务:

    systemctl list-dependencies graphical.target

  • 相关阅读:
    semijoin链接进行subquery unnesting.
    CONCATENATION 引发的性能问题
    身份证号码有效性检测算法 ( js版 转 C#版 )
    【CS Round #48 (Div. 2 only)】8 Divisible
    【CS Round #48 (Div. 2 only)】Water Volume
    【CS Round #48 (Div. 2 only)】Game of Chance
    【】queue
    【】maze
    【】minimum
    【AtCoder Beginner Contest 073 D】joisino's travel
  • 原文地址:https://www.cnblogs.com/yinyunmoyi/p/12538957.html
Copyright © 2020-2023  润新知