【Linux】【Commands】systemd
1. 系统启动流程:POST --> Boot Sequeue(BIOS) --> Bootloader(MBR) --> Kernel(ramdisk) --> rootfs --> /sbin/init init: CentOS 5: SysV init CentOS 6:Upstart CentOS 7:Systemd 2. Systemd的新特性: 系统引导时实现服务并行启动; 按需激活进程; 系统状态快照; 基于依赖关系定义服务控制逻辑; 3. 核心概念:unit unit由其相关配置文件进行标识、识别和配置;文件中主要包含了系统服务、监听的socket、保存的快照以及其它与init相关的信息; 这些配置文件主要保存在: /usr/lib/systemd/system /run/systemd/system /etc/systemd/system 4. 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无法与之通信; 6. 管理系统服务: CentOS 7: service类型的unit文件; 7. syscemctl命令: - Control the systemd system and service manager systemctl [OPTIONS...] COMMAND [NAME...] 启动: service NAME start ==> systemctl start NAME.service 停止: service NAME stop ==> systemctl stop NAME.service 重启: service NAME restart ==> systemctl restart NAME.service 状态: service NAME status ==> systemctl status NAME.service 条件式重启:service NAME condrestart ==> systemctl try-restart NAME.service 重载或重启服务: systemctl reload-or-restart NAME.servcie 重载或条件式重启服务:systemctl reload-or-try-restart NAME.service 查看某服务当前激活与否的状态: systemctl is-active NAME.service 查看所有已激活的服务:systemctl list-units --type service 查看所有服务(已激活及未激活): chkconfig --lsit ==> systemctl list-units -t service --all 设置服务开机自启: chkconfig NAME on ==> systemctl enable NAME.service 禁止服务开机自启: chkconfig NAME off ==> systemctl disable NAME.service 查看某服务是否能开机自启: chkconfig --list NAME ==> systemctl is-enabled NAME.service 禁止某服务设定为开机自启: systemctl mask NAME.service 取消此禁止: systemctl unmask NAME.servcie 查看服务的依赖关系:systemctl list-dependencies NAME.service 8. 管理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 级别切换: init N ==> systemctl isolate NAME.target 查看级别: runlevel ==> systemctl list-units --type target 查看所有级别: systemctl list-units -t target -a 获取默认运行级别:systemctl get-default 修改默认运行级别: systemctl set-default NAME.target 切换至紧急救援模式: systemctl rescue 切换至emergency模式: systemctl emergency 9. 其它常用命令: 关机: systemctl halt, systemctl poweroff 重启: systemctl reboot 挂起: systemctl suspend 快照: systemctl hibernate 快照并挂起: systemctl hybrid-sleep 10. 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重载此配置文件; # systemctl daemon-reload 练习:为当前系统的httpd服务提供一个unit文件;【Linux】【Commands】systemd的更多相关文章
- 【Linux探索之旅】第二部分第二课:命令行,世界尽在掌握
内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:“小编,你为什么每次都要起这么非主 ...
- 【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见
内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是 ...
- 两款【linux字符界面下】显示【菜单】,【选项】的powershell脚本模块介绍
两款[linux字符界面下]显示[菜单],[选项]的powershell脚本模块介绍 powershell linux ps1 menu choice Multiselect 传教士 菜单 powe ...
- 【Linux探索之旅】第二部分第五课:用户和权限,有权就任性
内容简单介绍 .第二部分第五课:用户和权限,有权就任性 2.第二部分第六课预告:Nano,刚開始学习的人的文本编辑器 用户和权限.有权就任性 今天的标题也挺任性的啊,虽说小编是一个非常本分的人(真的吗 ...
- 【LINUX/UNIX网络编程】之简单多线程服务器(多人群聊系统)
RT,Linux下使用c实现的多线程服务器.这个真是简单的不能再简单的了,有写的不好的地方,还希望大神轻拍.(>﹏<) 本学期Linux.unix网络编程的第四个作业. 先上实验要求: [ ...
- 【LINUX/UNIX网络编程】之使用消息队列,信号量和命名管道实现的多进程服务器(多人群聊系统)
RT,使用消息队列,信号量和命名管道实现的多人群聊系统. 本学期Linux.unix网络编程的第三个作业. 先上实验要求: 实验三 多进程服务器 [实验目的] 1.熟练掌握进程的创建与终止方法: 2 ...
- 【Linux/unix网络编程】之使用socket进行TCP编程
实验一 TCP数据发送与接收 [实验目的] 1.熟练掌握套接字函数的使用方法. 2.应用套接字函数完成基本TCP通讯,实现服务器与客户端的信息交互. [实验学时] 4学时 [实验内容] 实现一个服务器 ...
- 【Linux探索之旅】第一部分第二课:下载Linux,免费的噢
内容简介 1.第一部分第二课:下载Linux,免费的噢 2.第一部分第三课预告:测试并安装Ubuntu 下载Linux,免费的噢 大家好,上一课我们认识了非常“霸气侧漏”的Linux操作系统. 也知道 ...
- 【Linux探索之旅】第一部分第三课:测试并安装Ubuntu
内容简介 1.第一部分第三课:测试并安装Ubuntu 2.第一部分第四课预告:磁盘分区 测试并安装Ubuntu 大家好,经过前两个比较偏理论(是否想起了带着瓜皮帽,手拿折扇的老学究,或者腐儒)的课程, ...
- 【Linux探索之旅】开宗明义+第一部分第一课:什么是Linux?
内容简介 1.课程大纲 2.第一部分第一课:什么是Linux? 3.第一部分第二课预告:下载Linux,免费的噢! 开宗明义 我们总听到别人说:Linux挺复杂的,是给那些追求逼格的程序员用的.咱 ...
随机推荐
- 【JAVA】编程(3)---王狗蛋先生去取钱,发现余额不足 !?!?
作业要求: 1.写一个名为Account的类模拟账户.该类的属性和方法如下所示: 该类包括的属性: ID,余额balance,年利率; 包含的方法:各属性的set和get方法.取款方法withdraw ...
- 我罗斯方块最终篇(Block类)
负责的任务 完善Block类的相关函数及变量: 对Block类中函数进行调整改进,并于其他人负责的类相互配合: 对Block类的函数功能进行调试: github项目地址. 效果图 具体可见总篇,一下仅 ...
- 大爽Python入门教程 0-4 安装Pycharm
大爽Python入门公开课教案 点击查看教程总目录 安装重量级IDE--Pycharm 一 下载 下面步骤1,2中网络卡顿的朋友, 请直接前往步骤3来下载. 使用搜索引擎搜索Pycharm, 打开搜索 ...
- UML常用建模工具简介,安装方法和各自的优点
这学期学习了统一建模语言,自己初学时对各种建模工具十分陌生,各种名词都不懂,软件也都不了解,开始很是不知所措.为了防止其他初学者陷入我的困境,自己对各种工具进行了总结: Visio:介绍:Visio是 ...
- vue + cesium开发(5) 搭建 vue + cesium开发环境(2)
上vue+cesium开发(1)中,没有进行配置webpack,而是使用了插件进行代替,在使用过程中出现了一些未知BUG,影响体验,因此参考了官方文档对项目进行重新配置,使用了 copy-webpac ...
- Maven 依赖调解源码解析(四):传递依赖,第一声明者优先
本文是系列文章<Maven 源码解析:依赖调解是如何实现的?>第四篇,主要介绍依赖调解的第二条原则:传递依赖,第一声明者优先.请按顺序阅读其他系列文章,系列文章总目录参见:https:// ...
- JVM核心——JVM运行和类加载全过程
1.类加载全过程 (1)类加载机制 JVM把class文件加载到内存,并对数据进行校验.解析和初始化,最终形成JVM可以直接使用的Java类型的过程. 加载 将class文件字节码内容加载到内存中,并 ...
- CodeBlocks调试器缺少(gdb.exe)文件
错误如下: Building to ensure sources are up-to-date Selecting target: Debug ERROR: You need to specify ...
- [noi1760]SAM
建立SAM,求出每一个节点最左边的出现位置(即right集合中的最小元素,在树上dfs即可) 枚举左端点i和右端点j(保证j是最小的满足$s[i,j)$不是$s[0,i)$的子串),维护k表示$s[i ...
- linux新增定时脚本
crontab -e 然后新增: 0 * * * * sh /usr/local/redis/copy/redis_rdb_copy_hourly.sh 控制台回显"crontab:inst ...