rhcl7的用户空间父进程systemd

Sysmted

systemd是什么?

大家知道当内核完成初始化,以只读方式挂载rootfs以后,运行了用户空间的第一个进程叫init,我们以centos系列为视角来看看:

CentOS 5: SysV init

CentOS 6:Upstart

CentOS 7:Systemd



    Systemd的新特性:

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

按需激活进程;注:访问时候才激活进程

系统状态快照;

基于依赖关系定义服务控制逻辑;

核心概念:unit

unit是什么?

        Unit 文件统一了过去各种不同的系统资源配置格式,例如服务的启/停、定时任务、设备自动挂载、网络配置、设备配置、虚拟内存配置等。而 Systemd 通过不同的通过文件的后缀名来区分这些配置文件,.service 文件便是其中的一种。


文件中主要包含了系统服务、监听的socket、保存的快照以及其它与init相关的信息; 这些配置文件主要保存在:

/usr/lib/systemd/system  注:系统或用户提供的配置文件

/run/systemd/system      注:软件运行时生成的配置文件

/etc/systemd/system      注:系统或第三方软件安装时添加的配置文件


下面是 Systemd 所支持的12种 Unit 文件类型。

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

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

Device unit: .device,用于定义内核识别的设备;

Mount unit: .mount,定义文件系统挂载点;

Socket unit: .socket,用于标识进程间通信用到的socket文件;

Snapshot unit: .snapshot, 管理系统快照;

Swap unit: .swap, 用于标识swap设备;

Automount unit: .automount,文件系统自动点设备;

Path unit: .path, 用于定义文件系统中的一文件或目录;

        关键特性:

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

基于bus的激活机制;

基于device的激活机制;

基于Path的激活机制;

系统快照:保存各unit的当前状态信息于持久存储设备中;

向后兼容sysv init脚本;  /etc/init.d/



    不兼容:

systemctl的命令是固定不变的;

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

    service类型的unit文件命令---syscemctl


用法:

syscemctl命令:systemctl  [OPTIONS...]  COMMAND  [NAME...]

centos6和7服务启动关闭对比


1、条件式重启:service  NAME  condrestart  ==>  systemctl  try-restart  NAME.service

2、重载或重启服务: systemctl  reload-or-restart  NAME.servcie

3、重载或条件式重启服务:systemctl  reload-or-try-restart  NAME.service

4、查看某服务当前激活与否的状态: systemctl  is-active  NAME.service

5、查看所有已激活的服务:systemctl  list-units  --type  service

6、查看所有服务(已激活及未激活): chkconfig --lsit  ==>  systemctl  list-units  -t service     --all

7、设置服务开机自启: chkconfig  NAME  on  ==>  systemctl  enable  NAME.service

8、禁止服务开机自启: chkconfig  NAME  off  ==>  systemctl  disable  NAME.service

9、查看某服务是否能开机自启: chkconfig  --list  NAME  ==>  systemctl  is-  enabled            NAME.service

10、禁止某服务设定为开机自启: systemctl  mask  NAME.service

11、取消此禁止: systemctl  unmask  NAME.servcie

12、查看服务的依赖关系:systemctl  list-dependencies  NAME.service

剖析service unit file:

文件通常由三部分组成:

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

[Service]:与特定类型相关的专用选项;此处为Service类型;

[Install]:定义由“systemctl  enable”以及"systemctl  disable“命令在实现服务                         启用或禁用时用到的一些选项;

 Unit段的常用选项:

Description:描述信息; 意义性描述;

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

Requies:依赖到的其它units;强依赖,被依赖的units无法激活时,当前unit即无法激活;

Wants:依赖到的其它units;弱依赖;

Conflicts:定义units间的冲突关系;

Service段的常用选项:

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

simple:

forking:

oneshot:

dbus:

notify:

idle:

EnvironmentFile:环境配置文件;

ExecStart:指明启动unit要运行命令或脚本; ExecStartPre, ExecStartPost

ExecStop:指明停止unit要运行的命令或脚本;

Restart:

 Install段的常用选项:

Alias:

RequiredBy:被哪些units所依赖;

WantedBy:被哪些units所依赖;

注意:对于新创建的unit文件或,修改了的unit文件,要通知systemd重载此配置文件;

管理target units:


运行级别:

0  ==>  runlevel0.target,  poweroff.target

1  ==>  runlevel1.target,  rescue.target

2  ==>  runlevel2.tartet,  multi-user.target

3  ==>  runlevel3.tartet,  multi-user.target

4  ==>  runlevel4.tartet,  multi-user.target

5  ==>  runlevel5.target,  graphical.target

6  ==>  runlevel6.target,  reboot.target



centos6和7运行级别切换对比

1、级别切换: init  N  ==>  systemctl  isolate  NAME.target

2、查看级别: runlevel  ==>  systemctl  list-units  --type  target

3、查看所有级别: systemctl  list-units  -t  target  -a

4、获取默认运行级别:systemctl  get-default

5、修改默认运行级别: systemctl  set-default   NAME.target

6、切换至紧急救援模式: systemctl  rescue

7、切换至emergency模式: systemctl  emergency

其它常用命令:

关机: systemctl  halt,  systemctl  poweroff

重启: systemctl  reboot

挂起: systemctl  suspend

快照: systemctl  hibernate

快照并挂起: systemctl  hybrid-sleep

# systemctl  daemon-reload

练习:为当前系统的httpd服务提供一个unit文件;

时间: 2024-12-25 17:53:25

rhcl7的用户空间父进程systemd的相关文章

回收进程用户空间资源 exit()函数 _exit()函数 atexit()函数 on_exit()函数

摘要:本文主要讲述进程的终止方式,以及如何使用exit()函数来终止进程,回收进程用户空间资源:分析了exit()函数与_exit()函数,return关键字的差异.同时详细解读了如何使用atexit()和on_exit()函数来注册终止处理程序. 进程终止.回收资源 1.进程终止方式 在内核中,程序执行的唯一方法是调用一个exec函数.而进程自愿终止的唯一方法是显示或隐式地调用_exit()或_Exit(). 进程有5种正常终止方式: (1)常见的一种是,在main函数中执行return语句,

+++++++++用户空间进程通信、tcp协议基础、http协议基础

网络进程的通信知识 裸套接字.分段.分片.MTU 进程地址.用户空间.内核空间 进程间通信.socket tcp协议 http协议 超文本定义.超文本格式 web资源: 动态 静态 访问入口.被访问的资源 跨站引用/盗链 URI,URL,RUN关系,子集 URL格式 主机地址+进程地址(port) 裸套接字:不调用传输层的tcp,udp协议封装报文 进程地址:用TCP,UDP协议的端口标识,端口(16bits) IANA Internet Assign Number Agent 互联网地址名称分

内核空间、进程和线程等概念

用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限.为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操作系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间.针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较

用户空间和内核空间通讯之【Netlink 上】

原文地址:用户空间和内核空间通讯之[Netlink 上] 作者:wjlkoorey258 引言 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接口的方式提供内核与用户空间的双向数据通信:随后,在2.1内核开发过程中,Alexey Kuznetsov将Netlink改写成一个更加灵活.且易于扩展的基于消息通信接口,并将其应用到高级路由子系统的基础框架里.自那时起,Netlink就成了Linux内核子系统和用户态的应用程序通信的主要手段之一.

内核空间、用户空间和虚拟地址(转)

原文:http://www.cnblogs.com/yanhaidong/archive/2011/02/11/2339050.html IO是基于缓存区来做的,所谓的输入和输出就是从缓存区中移入和移出数据.以IO输入为例,首先是用户空间进程向内核请求某个磁盘空间数据,然后内核将磁盘数据读取到内核 空间的buffer中,然后用户空间的进程再将内核空间buffer中的数据读取到自身的buffer中,然后进程就可以访问使用这些数据. 内核空间是指操作系统内核运行的空间,是为了保证操作系统内核的能够安

Linux内存管理--用户空间和内核空间【转】

本文转载自:http://blog.csdn.net/yusiguyuan/article/details/12045255 关于虚拟内存有三点需要注意: 4G的进程地址空间被人为的分为两个部分--用户空间与内核空间.用户空间从0到3G(0xc0000000),内核空间占据3G到4G.用户进程通常情况下只能访问用户空间的虚拟地址,不能访问内核空间的虚拟地址.例外情况只有用户进程进行系统调用(代表用户进程在内核态执行)等时刻可以访问到内核空间. 用户空间对应进程,所以每当进程切换,用户空间就会跟着

【转】linux 用户空间与内核空间——高端内存详解

摘要:Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中.用户空间的内存映射采用段页式,而内核空间有自己的规则:本文旨在探讨内核空间的地址映射. Linux内核地址空间划分 通常32位Linux内核虚拟地址空间划分0~3G为用户空间,3~4G为内核空间(注意,内核可以使用的线性地址只有1G).注意这里是32位内核地址空间划分,64位

linux用户空间和内核空间(内核高端内存)_转

转自:Linux用户空间与内核空间(理解高端内存) 参考: 1. 进程内核栈.用户栈 2. 解惑-Linux内核空间 3. linux kernel学习笔记-5 内存管理 Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中. Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型.进程代码中的地址为逻辑地址,经过段页式地

Linux 内核空间与用户空间

本文以 32 位系统为例介绍内核空间(kernel space)和用户空间(user space). 内核空间和用户空间 对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方).也就是说一个进程的最大地址空间为 4G.操作系统的核心是内核(kernel),它独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限.为了保证内核的安全,现在的操作系统一般都强制用户进程不能直接操作内核.具体的实现方式基本都是由操作系统将虚拟地址空间划分