System V

特点

缺点:

  1. 启动时间长,init是串行启动,只有前一个进程启动完,才会启动下一个进程
  2. 启动脚本复杂,init只是执行启动脚本,不管其他事情,脚本需要自己处理各种情况,这往往使得脚本变得很长很复杂

优点:

  1. 概念简单,只需要编辑脚本
  2. 启动顺序确定,严格按照启动数字的大小顺序执行,一个执行完毕再执行下一个,有益于错误排查

文件目录

/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 获取

    启动过程中会通知 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作准备

启动过程

  1. 执行 /sbin/init程序,启动init进程(PID=1),是linux的父进程,其他所有进程都是它的子进程
  2. init 读取 /etc/inittab文件,获知设定的运行级别
  3. 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

添加开机启动服务

添加启动脚本

  1. /etc/init.d目录下添加启动脚本,赋予可执行权限

  2. 在对应运行级别的启动目录下创建符号链接,指向/etc/init.d目录下的启动脚本

    ln -s /etc/init.d/myservice /etc/rc5.d/S99myservice

    或者

    执行 chkconfig --add xxx

设置MySQL开机自启动

配置 rc.local

Upstart

Ubuntu 15.04 之前默认使用 Upstart,之后使用 Systemd,没有深入了解

Project is in maintaince mode only. No new features are being developed and the general advice would be to move over to another minimal init system or Systemd.

简介

采用事件驱动模型,UpStart 可以:

  • 更快地启动系统(有依赖关系的服务还是必须先后启动)
  • 当新硬件被发现时动态启动服务
  • 硬件被拔除时动态停止服务

目录

配置文件地址/etc/init

https://askubuntu.com/a/5042

参考

https://www.ibm.com/developerworks/cn/linux/1407_liuming_init2/index.html?ca=drs-

Linux 初始化系统 SystemV Upstart的更多相关文章

  1. Linux 初始化系统(init)- systemd

    wikipedia 浅析 Linux 初始化 init 系统 systemd 中文手册 fedoraproject - systemd 1. Systemd 简介 Systemd 是 Linux 系统 ...

  2. Linux 初始化系统 systemd - journald 日志

    journalctl 中文手册 archlinux - journal systemd-journald 用于检索 systemd 的日志,是 systemd 自带的日志系统. 1. systemd- ...

  3. 浅析 Linux 初始化 init 系统,第 1 部分: sysvinit 第 2 部分: UpStart 第 3 部分: Systemd

    浅析 Linux 初始化 init 系统,第 1 部分: sysvinit  第 2 部分: UpStart 第 3 部分: Systemd http://www.ibm.com/developerw ...

  4. 【转】Linux 初始化 init 系统 [sysvinit systemd upstart]

    http://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp?sort_by=&show_abstract=true& ...

  5. Linux初始化init系统-Sysvinit、Upstart、Systemd

    首先了解以下Ubuntu运行级别(init)对应工具的变化历史: 1.Ubuntu 6.10及以前版本使用Sysvinit. 2.Ubuntu 14.10及以前版本使用Upstart但是还留着Sysv ...

  6. 温故之--Linux 初始化 init 系统

    参选URL: http://www.ibm.com/developerworks/cn/linux/1407_liuming_init1/index.html 本系列一共三篇,看完记住,那水平就不一样 ...

  7. 浅析 Linux 初始化 init 系统

    近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经逐渐淡出历史舞台,新的 UpStart 和 systemd 各有特点,越来越多的 Linux 发行版采纳了 ...

  8. Linux系统之UpStart

    子贡问为仁.子曰:“工欲善其事,必先利其器.居是邦也,事其大夫之贤者,友其士之仁者.”——孔子(春秋)<论语·卫灵公> [工欲善其事,必先利其器] 掌握一门技术,知道其发展历程是非常重要的 ...

  9. linux下的初始化系统systemd简科普

    systemd是什么?名字很奇怪,不认识. 扒一扒wiki,你就会知道我是谁了? 在下有眼不识泰山,原来你就是盘古老爷爷用的开天辟地大斧头啊. 贫穷不可怕,可怕的是贫穷限制了你的想象--------- ...

随机推荐

  1. MRCTF 2020 WP

    MRCTF 2020 WP 引言 周末趁上课之余,做了一下北邮的CTF,这里记录一下做出来的几题的WP ez_bypass 知识点:MD5强类型比较,is_numeric()函数绕过 题目源码: I ...

  2. 多服务器 vps 管理方法,十款远程桌面软件测评分析

    作为运维工作者,从几年前巨大的工作量到如今有了极大的改善,这些年试用的远程桌面管理软件不在少数. 远程桌面是微软公司为了方便网络管理员管理维护服务器而推出的一项服务.从windows 2000 ser ...

  3. JVM系列.JVM内存模型

    <Java虚拟机规范>将虚拟机的内存分为以下几个区域: 堆区:堆区是JVM中最大的一块内存区域,按照垃圾分代收集的角度划分,又可以分成年轻代和老年代,而年轻代内存又被分成三部分,Eden空 ...

  4. Java 解析 XML文件

    ​个人博客网:https://wushaopei.github.io/    (你想要这里多有) package com.example.poiutis.xml; import com.example ...

  5. ASP.NET的Web网页如何进行分页操作(Demo举例)

    大概说一下思路,可以利用sql的 Offset/Fetch Next分页,点击这里 这里的Demo利用LINQ的写好的方法 //这里是某个表的列表 skip是跳过前面的多少条数据 take这是跳过前面 ...

  6. Java实现 LeetCode 775 全局倒置与局部倒置(分析题)

    775. 全局倒置与局部倒置 数组 A 是 [0, 1, -, N - 1] 的一种排列,N 是数组 A 的长度.全局倒置指的是 i,j 满足 0 <= i < j < N 并且 A ...

  7. Java实现 蓝桥杯 算法提高 01背包

    算法提高 01背包 时间限制:1.0s 内存限制:256.0MB 问题描述 给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个. 输入 ...

  8. Java实现 LeetCode 373 查找和最小的K对数字

    373. 查找和最小的K对数字 给定两个以升序排列的整形数组 nums1 和 nums2, 以及一个整数 k. 定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2. 找 ...

  9. Java实现 LeetCode 225 用队列实现栈

    225. 用队列实现栈 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空 注意: 你只能使 ...

  10. Java实现 N的阶乘

    import java.util.Scanner; public class n的阶乘 { public static void main(String[] args) { Scanner sc =n ...