首页 > > > linux服务-简介
服务管理
服务介绍
独立服务
非独立服务
服务介绍
服务:常驻在内存中的程序,且可以提供一些系统或网络功能,那就是服务。
计算机中的系统服务有很多,比如:
apache提供web服务
ftp提供文件下载上传服务
ssh提供了远程连接服务
防火墙提供了安全防护服务等等
可以把计算机理解为一个地点 比如中关村大街 系统服务 理解为 中关村大街的理发店、饭店、商场等等,每一个都是一个系统服务,为客户提供不同内容的服务,计算机中的系统服务比如apache提供web服务、ftp提供文件下载上传服务、ssh提供了远程连接服务、防火墙提供了安全防护服务等等。
Linux服务器的主要任务就是为本地或远程用户提供各种服务。通常Linux系统上提供服务的程序是由运行在后台的守护进程(Daemon)来执行。一个实际运行中的Linux系统一般会有多个这样的程序在运行。这些后台守护进程在系统开机后就运行了,并且在时刻地监听前台客户地服务请求,一旦客户发出了服务请求,守护进程便为它们提供服务。
系统初始化进程是一个特殊的的守护进程,其PID为1,它是所有其他守护进程的父进程或者祖先进程。也就是说,系统上所有的守护进程都是由系统初始化进程进行管理的(如启动、停止等)。
rhel7之前采用的是systemV,rhel7开始采用的是systemd来管理服务
系统上所有的守护进程都是由系统初始化进程进行管理的(如启动、停止等)。
systemV介绍
启动系统服务的管理方式被称为 SysV 的 init, 同时init也是唯一一个由内核直接启动的进程 , 然后 init 去唤醒所有的系统所需要的服务,不论是本地服务还是网络服务。
• 服务的启动、关闭与查看等方式:
所有的服务启动脚本通通放置于 /etc/init.d/ 底下,基本上都是使用 bash shell script 所写成的脚本程序,需要启动、关闭、重新启动、观察状态时,可以通过如下的方式来处理:
启动:/etc/init.d/daemon start
关闭:/etc/init.d/daemon stop
重新启动:/etc/init.d/daemon restart
状态查看:/etc/init.d/daemon status
• 服务的依赖关系:
服务是会有依赖关系的,例如,你想使用nfs服务,在使用之前你必须启动portmap/rpcbind服务,否则nfs无法正常使用.init是无法帮管理员实现协同启动的,管理员必须时刻记得这些依赖关系
• 运行级别的分类:
上面说到 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 的设置,因此在开机时可以『依序执行』所有需要的服务, 同时也能解决相依服务的问题。
• 制定运行级别默认要启动的服务:
若要建立如上提到的 SXXdaemon 的话,不需要管理员手动建立连结, 通过如下的命令可以来处理默认启动、不启动以及查看启动状态 使用方法为:
默认启动: chkconfig daemon on
默认不启动: chkconfig daemon off
查看启动状态: chkconfig --list daemon
默认不启动: chkconfig daemon off
查看启动状态: chkconfig --list daemon
• 运行级别的切换行为:
当你要从纯文本界面 (runlevel 3) 切换到图形界面 (runlevel 5), 不需要手动启动、关闭该运行级别的相关服务,只要(init 5 )即可切换
systemd
• 并行处理所有服务,加速开机流程:
旧的 init 启动脚本是串行启动的模式,因此不相依的服务也是得要一个一个的等待。但目前我们的硬件主机系统与操作系统几乎都支持多核心架构了, systemd 就是可以让所有的服务同时启动,因此你会发现到,系统启动的速度变快了!
• 立即响应的启动方式:
systemd 全部就是仅有一个 systemd 服务搭配 systemctl 命令来处理,无须其他额外的命令来支持。不像 systemV 还要 init, chkconfig, service... 等等命令。 此外, systemd 由于常驻内存,因此任何要求都可以立即响应
• 服务依赖性的自我检查:
由于 systemd 可以自定义服务依赖性的检查,因此如果 B 服务是在 A 服务上面启动的,那当你在没有启动 A 服务的情况下仅手动启动 B 服务时, systemd 会自动帮你启动 A 服务
• 依 daemon 功能分类:
systemd管理的服务非常多,为了理清所有服务的功能,因此,首先 systemd 先定义所有的服务为一个服务单位 (unit),并将该 unit 归类到不同的服务类型 (type) 去。 旧的 init 仅分为 stand alone 与 super daemon,systemd 将服务单位 (unit) 区分为 service, socket, target, path, snapshot, timer 等多种不同的类型(type), 方便管理员的分类与记忆。
• 将多个 daemons 集合成为一个群组:
如同 systemV 的 init 里头有个 runlevel 的特色,systemd 亦将许多的功能集合成为一个所谓的 target 项目,这个项目主要在设计操作环境的建置, 所以是集合了许多的 daemons,亦即是执行某个 target 就是执行好多个 daemon 的意思!
• 向下兼容旧有的 init 服务脚本:
基本上, systemd 是可以兼容于 init 的启动脚本的,因此,旧的 init 启动脚本也能够通过 systemd 来管理,只是更高级的 systemd 功能就没有办法支持就是了。
虽然如此,不过 systemd 也是有些地方无法完全取代 init 的!包括:
1)在 runlevel 的对应上,大概仅有 runlevel 1, 3, 5 有对应到 systemd 的某些 target 类型而已,没有全部对应;
2)全部的 systemd 都用 systemctl 这个管理程序管理,而 systemctl 支持的语法有限制,不像 /etc/init.d/daemon 就是纯脚本可以自定义参数,systemctl 不可自定义参数。
3)如果某个服务启动是管理员自己手动执行启动,而不是使用 systemctl 去启动的 (例如你自己手动输入 crond 以启动 crond 服务),那么 systemd 将无法侦测到该服务,而无法进一步管理。
4)systemd 启动过程中,无法与管理员互动!因此,自行编写 systemd 的启动设置时,务必要取消互动机制
独立的服务和基于xinetd服务的区别:
独立的服务:服务独立的运行在内存中,服务响应速度快,但占用更多内存。
基于xinetd服务: xinetd服务是超级守护进程的一种。xinetd服务本身独立存在,管理一些服务。用户通过xinetd服务请求其管理的一些服务,然后xinetd返回请求服务的回复给用户,xinetd服务相当于proxy一样的角色。xinetd服务逐步被淘汰,大多数服务都是独立的服务
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2730/viewspace-3136619/ ,如需转载,请注明出处,否则将追究法律责任。