首页 > 系统相关 >Linux—控制服务和守护进程

Linux—控制服务和守护进程

时间:2023-08-15 14:23:45浏览次数:33  
标签:服务 target service 启动 Linux 进程 守护 name

Linux 控制服务和守护进程

1、守护进程简介

1.1 为什么会有守护进程?

在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就是这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。但是守护进程却能够突破这种限制,它从被执行开始运转,直到整个系统关闭时才退出。

1.2 守护进程概述

守护进程(daemon)就是脱离于终端并且在后台等待或运行的进程。

linux或者unix操作系统在引导时会开启很多服务,这些服务也是守护进程。为了增加灵活性,管理员可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。

2、控制服务

2.1 什么是服务?

Linux中的"服务"是一类常驻在内存中的进程(守护进程),这类进程启动后就在后台当中一直持续不断的运行,监听相应的端口,为客户端提供相应的服务。

2.2 用什么控制服务?

系统初始化进程可以对服务进行相应的控制;也就是管理守护进程。

2.3 系统初始化进程

SysV风格:init(centos5)

实现系统初始化,初始化操作 都是借助于脚本来实现。
配置文件:/etc/inittab

  • 脚本种含有大量的命令,每个命令都要启动一个进程,命令执行完毕以后就要终止这个进程;如此一来系统初始化时将大量的创建进程,销毁进程,工作效率非常低。
  • 服务之间可能会存在依赖关系,所以服务必须严格按照一定的顺序来启动,前一个服务没启动完后面的服务就无法启动;不能并行启动。
Upstart风格:init(centos6)

由Ubuntu研发的,通过总线形式以接近于并行的方式工作,效率比SysV高。
配置文件:/etc/inittab,/etc/init.d/

  • 基于总线方式能够让进程间互相通信的一个应用程序。
  • 不用等服务启动完成,只要一初始化就可以把自己的状态返回给其他进程。
Systemd风格:systemd(centos7)

启动速度比SysV和Upstart都快。
配置文件:/usr/lib/systemd/system/,/etc/systemd/system/

  • 不需要通过任何启动脚本来启动服务,systemd自身就可以启动服务,其本身就是一个强大的解释器,启动服务不需要sh,bash的参与。
  • systemd不真正在系统初始化时去启动任何一个服务;只要服务没用到,它就告诉你启动了,实际并没有启动。仅当第一次去访问时才会真正启动服务。

2.4 Systemd系统初始化进程

系统启动和守护进程由systemd进行管理。此程序提供了一种方式,可以在启动时和运行中的系统上激活系统资源、管理服务器守护进程和其他进程。

Systemd新特性
  • 系统引导时实现服务的并行启动
  • 按需激活进程
  • 系统状态快照
  • 基于依赖关系定义服务控制逻辑
Systemd的核心概念unit

systemd使用unit(单元,个体)的概念来管理服务,这unit表现为一个个配置文件。

systemd通过对这些配置文件进行标识和配置达到管理服务的目的。

unit文件中主要包含了服务、监听socket、系统快照及其它与init相关的信息

unit配置文件保存位置:
/usr/lib/systemd/system/
/run/systemd/system
/etc/systemd/system/
Unit类型
Service unit		//文件扩展名为.service,用于定义系统服务
Target unit     //文件扩展名为.target,用于实现“运行级别”
Device unit     //文件扩展名为.device,用于定义内核识别的设备
Mount unit      //文件扩展名为.mount,用于定义文件系统挂载点
Socket unit     //文件扩展名为.socket,用于标识进程间通信的socket文件
Swap unit       //文件扩展名为.swap,用于标识swap设备
Automount unit  //文件扩展名为.automount,用于实现文件系统的自动挂载点
Path unit       //文件扩展名为.path,用于定义文件系统中的一个文件或目录
Unit关键特性
//基于socket的激活机制:
socket与服务程序分离,当有人去访问时才会真正启动服务,以此来实现按需激活进程与服务的并行启动

//基于bus的激活机制:
所有使用dbus实现进程间通信的服务,可以在第一次被访问时按需激活

//基于device的激活机制:
支持基于device激活的系统服务,可以在特定类型的硬件接入到系统中时,按需激活其所需要用到的服务

//基于path的激活机制:
某个文件路径变得可用,或里面出现新文件时就激活某服务

//系统快照:
保存各unit的当前状态信息于持久存储设备中,必要时能自动载入

//向后兼容sysv init脚本
  • 不兼容性
/systemctl命令固定不变

//非由systemd启动的服务,systemctl无法与之通信

//已经启动的服务在级别切换时才会执行stop,在centos6 以前是所有S开头的服务全部start, 所有K开头的服务全部stop

//系统服务不会读取任何来自标准输入的数据流

//每个服务的unit操作均受5分钟超时时间限制

2.5 Systemctl管理服务

语法:systemctl COMMAND name[.service/.target]

//常用COMMAND:
start name.service                 //启动服务
stop name.service                  //停止服务
reload name.service		   //重载服务
restart name.service               //重启服务
status name.service                //查看服务状态
enable name.service                //设定服务开机自动启动
disable name.service               //取消服务开机自动启动
mask name.service                  //关闭开机自启功能
unmask name.service                //开启开机自启功能

//系统运行级别
runlevel0.target和poweroff.target    //关机
runlevel1.target和rescue.target      //单用户模式
runlevel2.target和multi-user.target  //对于systemd来说,2/3/4级别没有区别
runlevel3.target和multi-user.target  //对于systemd来说,2/3/4级别没有区别
runlevel4.target和multi-user.target  //对于systemd来说,2/3/4级别没有区别
runlevel5.target和graphical.target   //图形级别
runlevel6.target和reboot.target	     //重启

//不常用COMMAND:
try-restart name.service	   //条件式重启服务,若服务已经启动则重启,若服务未启动则不做任何操作
reload-or-restart name.service     //重载或重启服务,能reload则reload, 否则restart
reload-or-try-restart name.service //重载或条件式重启服务,能reload则reload, 否则 try-restart
list-dependencies name.service     //查看服务的依赖关系
is-active name.service             //查看某服务当前激活与否的状态
is-enable name.service             //查看服务是否开机自动启动
isolate name.target                //切换至某级别,如systemctl isolate graphical.target就是切换至图形界面
list-unit-files --type service     //查看所有服务的开机自动启动状态(是否开机自启)
list-units --type service	   //查看所有已经激活的服务状态信息
list-units --type target           //查看所有已装载的级别
list-units --type service --all    //查看所有服务(已启动/已停止)的状态信息
list-units --type target --all     //查看所有的级别
get-default                        //查看默认运行级别
set-default name.target            //设置默认运行级别
rescue                             //切换至紧急救援模式(大多数服务不启动,但是会加载驱动)
emergency                          //切换至emergency模式(驱动不会加载,系统不会初始化,服务不会启动)
halt                               //关机
poweroff                           //关机
reboot                             //重启
suspend                            //挂起系统,此时不能关机,否则无用
hibernate                          //创建并保存系统快照,下次系统重启时会自动载入快照
hybrid-sleep                       //混合睡眠,快照并挂起

3、Centos6以前版本的系统控制服务方式

service NAME start      //启动NAME服务
service NAME stop       //停止NAME服务
service NAME status     //查看NAME服务状态
service NAME restart    //重启NAME服务
chkconfig --add NAME    //把NAME脚本纳入管理并设置开机自启
chkconfig NAME on       //设置开机自启
chkconfig NAME off      //设置开机不自动启动

标签:服务,target,service,启动,Linux,进程,守护,name
From: https://www.cnblogs.com/Alone-8712/p/16528290.html

相关文章

  • Linux配置互信
    例如有以下两台机需要做互信192.168.128.128192.168.128.1291、在服务器192.168.128.128生成公钥私钥对[[email protected]]#ssh-keygen-trsaGeneratingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/root/.ssh/id_rsa):Enterpassphrase(emptyf......
  • linux安装Nginx
    1.离线安装rpm-qa|grep"gcc" 或者yumlistinstalled|grep"gcc"查看是否安装第一步:gcc依赖下载镜像地址:官网:https://gcc.gnu.org/releases.html阿里云镜像站:http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/CentOS镜像站点:https://vault.centos.org/7.5.1804/o......
  • Linux之sed命令详解
    sed是一种流编辑器,它是文本处理中非常好的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文......
  • linux下安装xxljob
    一.环境准备服务器上需要安装jdk和maven(1).jdk下载地址:https://www.oracle.com/java/technologies/downloads/(2)下载完成后上传到linux服务器上(3)然后解压使用tar-zxvf jdk-8u351-linux-x64.tar.gz(tar包名改成自己版本的)(4)配置jdk环境变量vimetc/profile:exportJAVA_HOME=......
  • linux环境下监控docker进程运行情况,使用钉钉群机器人报警异常服务
    背景:在linux环境下,很多服务我们都使用docker来跑,很是方便,容器服务独立,配置独立,数据独立等等,但是有个问题,就是如果某个服务异常了,暂停了,停止了,一直重启中,我们要怎么及时的知道是哪个服务,并进行处理,保证业务正常运行。本文主要介绍使用docker服务自带的一些命令来实现一个基本的监......
  • Linux系统之top命令的基本使用
    (Linux系统之top命令的基本使用)一、top命令介绍top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。二、检查本地环境1.检查操作系统版本检查本地操作系统版本[root@j......
  • CentOS Linux 7&8安全基线检查
    阿里云标准-CentOSLinux7/8安全基线检查检查项类别描述加固建议等级密码复杂度检查身份鉴别检查密码长度和密码是否使用多种字符类型编辑/etc/security/pwquality.conf,把minlen(密码最小长度)设置为8-32位,把minclass(至少包含小写字母、大写字母、数字、特殊字符等4类字符中等3类或4......
  • Linux常用命令
    Linux常用命令一、日期时间date[OPTION]...[+FORMAT]-u:printUTC+FORMAT:like+%Y-%m-%d-s:settimehwclock:显示硬件时间cal:查看日历uptime:查看系统运行时间二、输出&查看echo:显示输出的内容cat:显示文件内容more:向下翻页,查看文件内容;空格向下翻页......
  • () {}用法,Linux shell脚本编程时bad substitution解决办法
     首先,我们要理解badsubstitution的字面意思,它的字面意思是“替换错误”的意思。这种错误的原因呢,通常是我们编写脚本时“{}”和“()”错误使用导致的。比如应该用“()”时,我们用成了“{}”;应该用“()”时,用成了“{}”。 那么如何区分什么时候用什么类型的括号呢?${}中,大括号里......
  • linux安装禅道(CentOS)
    提示:禅道是用PHP开发的,只要安装一个MySQL,找一个能跑php的web应用服务器,把禅道源代码放到里面,然后按步骤安装就可以了。不一定要用XAMPP,XAMPP只是把PHP环境和mysql都集成了而已。如果你想下载其他的版本http://www.zentao.net/download.html第一种方式:下载禅道:(64位)http://dl.cn......