Linux 初始化系统 SystemV Upstart

System V

特色

缺点:html

  1. 启动时间长,init是串行启动,只有前一个进程启动完,才会启动下一个进程
  2. 启动脚本复杂,init只是执行启动脚本,无论其余事情,脚本须要本身处理各类状况,这每每使得脚本变得很长很复杂

优势:linux

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

文件目录

/etc/init.d/ubuntu

存放服务启动脚本bash

对于支持 service 的程序,安装的时候,会自动的在 /etc/init.d 目录添加一个配置文件服务器

/etc/inittab网络

默认运行级别配置文件ionic

Ubuntu18.04已经不存在了ide

/etc/rcN.d工具

存放每一个启动级别须要启动的服务rest

运行级别

运行级别 说明
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-

相关文章
相关标签/搜索