Linux 初始化系统 SystemV Upstart
System V
特点
缺点:
- 启动时间长,init是串行启动,只有前一个进程启动完,才会启动下一个进程
- 启动脚本复杂,init只是执行启动脚本,不管其他事情,脚本需要自己处理各种情况,这往往使得脚本变得很长很复杂
优点:
- 概念简单,只需要编辑脚本
- 启动顺序确定,严格按照启动数字的大小顺序执行,一个执行完毕再执行下一个,有益于错误排查
文件目录
/etc/init.d/
存放服务启动脚本
对于支持 service 的程序,安装的时候,会自动的在 /etc/init.d 目录添加一个配置文件
/etc/inittab
默认运行级别配置文件
Ubuntu18.04已经不存在了
/etc/rcN.d
存放每个启动级别需要启动的服务
运行级别
| 运行级别 | 说明 |
|---|---|
| 0 | 关机状态,系统默认运行级别不能设为0,否则不能正常启动 |
| 1 | 单用户工作状态,root权限,用于系统维护,禁止远程登陆 |
| 2 | 字符界面的多用户模式(不可访问网络,没有NFS)) |
| 3 | 字符界面的完整多用户模式,大多数服务器主机运行此级别(有NFS) |
| 4 | 系统未使用,保留 |
| 5 | 图形界面的多用户模式,提供了图形桌面操作环境 |
| 6 | 系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动 |
查看运行级别
runlevel
打印之前和当前的运行级别
如果某个运行级别不能确定用 N 表示
-
启动过程中会通知 utmp 当前的运行级别
lfp@legion:~$ runlevel
N 5
# ubuntu 18.04 实际链接到 systemctl
lfp@legion:~$ which runlevel
/sbin/runlevel
lfp@legion:/sbin$ ll
lrwxrwxrwx 1 root root 14 4月 20 22:12 runlevel -> /bin/systemctl*
切换运行级别
init N
N代表运行级别,init 0 关机,init 6重启
# ubuntu 18.04 链接到 Systemd,支持init命令
lfp@legion:~$ ll /sbin/init
lrwxrwxrwx 1 root root 20 4月 20 22:12 /sbin/init -> /lib/systemd/systemd*
运行级别对应的启动目录
# 有7个目录,对应7个运行级别
# rc,表示run command(运行程序),最后的d表示directory(目录)
rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rcS.d/
每个目录下都是一些符号链接文件,指向/etc/init.d/目录下的脚本
命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字
对于以K (kill)开头的文件,系统将终止对应的服务
对于以S (start)开头的文件,系统将启动对应的服务nn 表示启动顺序,数字小先执行
启动目录下使用符号链接,便于在不同的运行级别中统一管理启动脚本
系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件
runlevel S并不是直接给用户使用,而是用来为Single user mode作准备
启动过程
- 执行
/sbin/init程序,启动init进程(PID=1),是linux的父进程,其他所有进程都是它的子进程 - init 读取
/etc/inittab文件,获知设定的运行级别 - init 根据运行级别,去对应的
/etc/rcN.d目录,启动目录下指定的程序(开机自启动)
服务管理工具
service, chkconfig
| 动作 | 指令 |
|---|---|
| 启动某服务 | service httpd start |
| 停止某服务 | service httpd stop |
| 重启某服务 | service httpd restart |
| 检查服务状态 | service httpd status |
| 删除某服务 | chkconfig --del httpd |
| 使服务开机自启动 | chkconfig --level 5 httpd on |
| 使服务开机不自启动 | chkconfig --level 5 httpd off |
| 显示所有已启动的服务 | chkconfig --list |
| 加入自定义开机自启服务 | chkconfig --add test |
| 查询某个服务是否开机自启 | chkconfig --list | grep httpd |
添加开机启动服务
添加启动脚本
在
/etc/init.d目录下添加启动脚本,赋予可执行权限在对应运行级别的启动目录下创建符号链接,指向
/etc/init.d目录下的启动脚本ln -s /etc/init.d/myservice /etc/rc5.d/S99myservice或者
执行
chkconfig --add xxx
配置 rc.local
Upstart
Ubuntu 15.04 之前默认使用 Upstart,之后使用 Systemd,没有深入了解
简介
采用事件驱动模型,UpStart 可以:
- 更快地启动系统(有依赖关系的服务还是必须先后启动)
- 当新硬件被发现时动态启动服务
- 硬件被拔除时动态停止服务
目录
配置文件地址/etc/init
参考
https://www.ibm.com/developerworks/cn/linux/1407_liuming_init2/index.html?ca=drs-
Linux 初始化系统 SystemV Upstart的更多相关文章
- Linux 初始化系统(init)- systemd
wikipedia 浅析 Linux 初始化 init 系统 systemd 中文手册 fedoraproject - systemd 1. Systemd 简介 Systemd 是 Linux 系统 ...
- Linux 初始化系统 systemd - journald 日志
journalctl 中文手册 archlinux - journal systemd-journald 用于检索 systemd 的日志,是 systemd 自带的日志系统. 1. systemd- ...
- 浅析 Linux 初始化 init 系统,第 1 部分: sysvinit 第 2 部分: UpStart 第 3 部分: Systemd
浅析 Linux 初始化 init 系统,第 1 部分: sysvinit 第 2 部分: UpStart 第 3 部分: Systemd http://www.ibm.com/developerw ...
- 【转】Linux 初始化 init 系统 [sysvinit systemd upstart]
http://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp?sort_by=&show_abstract=true& ...
- Linux初始化init系统-Sysvinit、Upstart、Systemd
首先了解以下Ubuntu运行级别(init)对应工具的变化历史: 1.Ubuntu 6.10及以前版本使用Sysvinit. 2.Ubuntu 14.10及以前版本使用Upstart但是还留着Sysv ...
- 温故之--Linux 初始化 init 系统
参选URL: http://www.ibm.com/developerworks/cn/linux/1407_liuming_init1/index.html 本系列一共三篇,看完记住,那水平就不一样 ...
- 浅析 Linux 初始化 init 系统
近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经逐渐淡出历史舞台,新的 UpStart 和 systemd 各有特点,越来越多的 Linux 发行版采纳了 ...
- Linux系统之UpStart
子贡问为仁.子曰:“工欲善其事,必先利其器.居是邦也,事其大夫之贤者,友其士之仁者.”——孔子(春秋)<论语·卫灵公> [工欲善其事,必先利其器] 掌握一门技术,知道其发展历程是非常重要的 ...
- linux下的初始化系统systemd简科普
systemd是什么?名字很奇怪,不认识. 扒一扒wiki,你就会知道我是谁了? 在下有眼不识泰山,原来你就是盘古老爷爷用的开天辟地大斧头啊. 贫穷不可怕,可怕的是贫穷限制了你的想象--------- ...
随机推荐
- [工具推荐]003.Tortoisegit使用教程
Git简介: Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.Git 是 ...
- Java中的集合(十五) Iterator 和 ListIterator、Enumeration
Java中的集合(十五) Iterator 和 ListIterator.Enumeration 一.Iterator (一).简介 Iterator 是一个接口,它是集合的迭代器.集合可以通过Ite ...
- [05]HTML基础之表格标签
1. <table>标签 表格容器,尽量避免用属性书写样式,而是用CSS来表达 border: 数字 //表格边框宽度 2. <caption>标签 表格的标题,一般出现在表格 ...
- Rocket - util - Misc
https://mp.weixin.qq.com/s/kf4FvAFye_bRdT49Yow7Hg 简单介绍Misc中各个辅助方法的用途和实现. 1. ParameterizedBu ...
- 【Mybatis】mybatis3入门
mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可 ...
- JUC : 并发编程工具类的使用
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.JUC是什么 1.JUC定义 JUC,即java.util.concurrent 在并发编程中使用的 ...
- Java实现 蓝桥杯VIP 算法训练 非递归(暴力)
试题 算法训练 非递归 问题描述 当x>1时,Hermite多项式的定义见第二版教材125页.用户输入x和n,试编写"非递归"函数,输出对应的Hermite多项式的值.其中x ...
- Java实现 蓝桥杯 算法训练 最大最小公倍数
算法训练 最大最小公倍数 时间限制:1.0s 内存限制:256.0MB 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少. 输入格式 输入一个正整数N. 输出格式 ...
- Java实现 LeetCode 378 有序矩阵中第K小的元素
378. 有序矩阵中第K小的元素 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素. 请注意,它是排序后的第k小元素,而不是第k个元素. 示例: matrix = [ ...
- Java实现 蓝桥杯 猜算式
猜算式 看下面的算式: □□ x □□ = □□ x □□□ 它表示:两个两位数相乘等于一个两位数乘以一个三位数. 如果没有限定条件,这样的例子很多. 但目前的限定是:这9个方块,表示1~9的9个数字 ...