1 环境

当前系统环境为:Linux mint mate 17.1(基于ubuntu14.04的衍生版)

备注:

/etc/rc*.d文件夹中的脚本文件的链接目标为:/etc/init.d文件夹下的脚本(*为系统运行级别‘数字’和字母:S,系统优先运行rcS.d目录下的脚本,然后运行rcN.d下的脚本)。

/etc/inittab: inittab为系统的PID=1的进程,决定这系统启动调用哪些启动脚本文件。

2 Linux系统启动

Linux系统主要通过以下步骤启动:

(1) 启动Boot Manager
(2) 加载系统内核,启动init进程, init进程是Linux的根进程,所有的系统进程都是它的子进程。
(3) init进程读取“/etc/inittab”文件中的信进入inittab中预设的运行级别,按顺序运行该运行级别对应文件夹(init*.d)下的脚本。脚本通常以“start”参数启动,并指向一个系统中的程序。通常情况下,“/etc/rcS.d/”目录下的启动脚本首先被执行,然后是“/etc/rcN.d/”目录。例如您设定的运行级别为3,那么它对应的启动目录为“/etc/rc3.d/”。
(4) 根据“/etc/rcS.d/”文件夹中对应的脚本启动Xwindow服务“xorg” 。Xwindow为Linux下的图形用户界面系统。
(5) 启动登录管理器,等待用户登录。

2.1 系统服务

在运行级别对应的文件夹中,您可以看到许多文件名以“S##”和“K##”起始的启动脚本链接

init 进程将以“start”为参数,按文件名顺序执行所有以“S##”起始的脚本。脚本名称中的数字越小,它将被越早执行。

例如在 “/etc/rc2.d/”文件夹中,“S13gdm”文件名中的数字小于“S23xinetd”,“S13gdm”将比“S23xinetd”先执行。

如果一个脚本链接,以“K##”起始,表示它将以“stop”参数被执行。如果相应服务没有启动,则不执行该脚本。

2.2 手动控制服务

你可以手动运行带有以下参数的启动脚本,来控制系统服务。
start 启动
stop 停止
restart 重启

例如:
/etc/rc2.d/K20powernowd start
有 时您并不清楚当前运行级别,该运行级别下未必有相应脚本;而且此类脚本的前三位字符并不固定,不便于记忆。

这时,您可以直接使用 “/etc/init.d/”文件夹中的启动脚本(因为“/etc/rcX.d/”中的启动脚本都是链接到“/etc/init.d/”文件夹下相应脚本)

3 Ubuntu系统

Ubuntu系统架构关于启动项大致分为四类,每一类都分为系统级和用户级

(1) 第一类upstart,或者叫job,由init管理,配置文件目录/etc/init,~/.init
(2) 第二类叫service,由rc.d管理,配置文件目录/etc/init.d,以及/etc/rc.local文件
(3) 第三类叫cron,由contab管理,使用crontab进行配置
(4) 第四类叫startup,由xdg管理,配置文件目录/etc/xdg/autostart,以及~/.config/autostart

upstart任务适用于runlevel<5的脚本和程序,service任务适用于runlevel<=5的任务,cron任务则不一定,而startup一般工作在runlevel=5,也就是桌面级。

对于普通用户而言,你的桌面级应用应该使用startup,服务级应用(比如某些功能性的软件脚本)应该使用service,常规性配置可以使用cron,而与启动顺序有关的最好使用upstart。

3.1 开机启动时自动运行程序

Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在

/etc/rcN.d
/etc/rcS.d
目录下的脚本文件,可以使init自动启动其它程序。例如:编辑/etc/rcS.d/rc.local(也就是/etc/rc.local,因为rcS.d链接目标为/etc) 文件(该文件通常是系统最后启动的脚本),

在文件最末加上一行“xinit”或“startx”,可以在开机启动后直接进入X-Window。

3.2 登录时自动运行程序

用户登录时,bash先自动执行系统管理员建立的全局登录script :

/ect/profile(大多在此文件中设置环境变量,它是整个桌面环境使用的一个shell进程,也就是登录shell)

>>>在linux中的shell可以分为:登录shell,非登录交互式shell,非登录非交互式shell(执行shell脚本),

>>>具体可以查看另一篇文章: 《 linux中各个shell配置文件的作用域和启动时间 》

然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:

/.bash_profile、
/.bash_login、
/.profile,
但只执行最先找到的一个。因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。

3.3 退出登录时自动运行程序

退出登录时,bash自动执行个人的退出登录脚本

/.bash_logout。
例如,在/.bash_logout中加入命令“tar -cvzf c.source.tgz *.c”,则在每次退出登录时自动执行 “tar” 命令备份 *.c 文件。

3.4 定期自动运行程序

Linux有一个称为crond的守护程序,主要功能是周期性地检查 /var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab 命令来建立、修改、删除这些命令文件。

例如,建立文件crondFile,内容为“00 9 23 Jan * HappyBirthday”,运行“crontab cronFile”命令后,每当元月23日上午9:00系统自动执行“HappyBirthday”的程序(“*”表示不管当天是星期几)。

root@iZ94uwewwwnZ:/# cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin# m h dom mon dow user    command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

3.5 定时自动运行程序一次

定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命令:

$ at 12:00
at>mailto Roger -s ″Have a lunch″ < plan.txt
at>Ctr-D
Job 1 at 2000-11-09 12:00

2000-11-09 12:00时候自动发一标题为“Have a lunch”,内容为plan.txt文件内容的邮件给Roger.

4 Ubuntu下添加开机启动脚本

(1) rc.local

Ubuntu开机之后会执行/etc/rc.local文件中的脚本,所以我们可以直接在/etc/rc.local中添加启动脚本。

当然要添加到语句:exit 0 前面才行。

(2) rcN.d

如果要添加为开机启动执行的脚本文件,可先将脚本复制或者软连接到/etc/init.d/目录下,然后用:update-rc.d xxx defaults NN命令(NN为启动顺序),将脚本添加到初始化执行的队列中去。

注意如果脚本需要用到网络,则NN需设置一个比较大的数字,如98 。

(1) 将脚本设为可执行权限,并拷贝至/etc/init.d
(2) 在/etc/init.d路径下执行update-rc.d script-name start 98 5 . 注:98为顺序,5为rc5.d,符号.不要忘记
(3) 这样会在会在/etc/rc5.d/下面创建1个符号链接,有必要在脚本的前段加一些provider/start-default等说明,否则报警

另外一种是

(1) 将脚本设为可执行
(2) 在rcN.d下执行ln ../init.d/script-name S99script

(3) systemd

本文转自:

https://www.cnblogs.com/aaronLinux/p/6860478.html

Linux启动流程rcN.d rcS.d rc.local等相关推荐

  1. [启动]Linux启动流程rcN.d rcS.d rc.local等

    Linux嵌入式相关项目走到最后很难避开要开机自启一些应用程序或者脚本等,最近也在帮助同事做这个事情,以前自己玩板子的时候都是较为随便的在/etc/rc.local中添加就可以了,但是项目的话还是走标 ...

  2. Linux 进内核,arm linux 启动流程之 进入内核

    原标题:arm linux 启动流程之 进入内核 还是从编译链接生成vm 的过程来看吧,由一大堆.o文件链接而成,第一个就是 kernel/arch//kernel/head-armv.o ,而且我们 ...

  3. linux启动流程及自定义gurb

    linux 启动流程 POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----> MBR(bootloader) 提供内核列表 -------& ...

  4. 最详细最易理解的linux启动流程解读及相关问题,万字高能无废话

    linux启动流程 linux的启动流程是运维所必须非常理解的东西,因为它将会是我们在发生服务器开不起机等情况的主要排错手段,充分理解了liunx的启动流程能够助力我们对此类故障的快速定位和处理. 废 ...

  5. Linux 启动流程学习

    Linux 启动流程学习 开机自检(加载BIOS) 无论什么机器,在开机后都要进行通电自检(硬件),如果硬件有问题,则无法继续下去. (例如当内存条松动时或者损坏,就会发出嘀嘀嘀警报声).接着开始加载 ...

  6. RISC-V Linux 启动流程分析

    " Author:  通天塔 985400330@qq.com Date:    2022/05/15 Revisor: lzufalcon falcon@tinylab.org Proje ...

  7. 嵌入式linux内核启动过程,嵌入式Linux:ARM Linux启动流程

    ARM Linux启动流程大致为:bootloader---->kernel---->root filesystem.bootloader 是一上电就拿到cpu 的控制权的,而bootlo ...

  8. 全志linux关机键,全志平台linux启动流程分析

    转载:全志平台linux启动流程分析 一.BROM阶段 机器上电之后会执行固化在BROM里面的一段引导程序,这个程序会依次遍历所有支持的启动介质,直到找到第一个支持的.目前支持的启动介质是sd/mmc ...

  9. 【树莓派不吃灰】命令篇⑥ 了解树莓派Boot分区,学习Linux启动流程

    目录 1. Linux启动过程 1.1 内核引导 1.2 运行init初始化进程 -- 初始化系统环境 1.3 运行级别 -- runlevel 1.4 系统初始化 -- 加载开机启动程序 1.5 用 ...

最新文章

  1. oracle fmis 是什么系统?,FMSQL
  2. json key 命名规范_jsonapi
  3. 《C语言点滴》一1.5 内功修炼
  4. 学习《apache源代码全景分析》之DSO概念
  5. linux终端安装cuda,Ubuntu下安装CUDA10.0以及问题
  6. mysql win10 优化设置_windows10如何优化?系统优化设置方法
  7. tips:Java基本数据类型大小比较
  8. 这些C4D创意卡通色彩场景,简直酷到爆炸!
  9. 计算机中的进制位运算
  10. 年仅44岁,又一高校教师英年早逝
  11. nginx upstream配置_效率倍增!网易杭研Nginx自动扩缩容实践
  12. 计算机怎么制作个人简历表步骤图片,教你如何制作个人简历表格!ppt课件
  13. JavaSE Lambda 表达式
  14. linux下安装EJBCA 搭建私有CA服务器----问题处理
  15. MIDI 128种音色码表
  16. Oracle查看表空间和数据表的使用情况
  17. 字符串分段组合python123_boost python分段fau
  18. CPU、GPU的设计工作原理
  19. python profile 性能分析
  20. amt是什么意思_变速箱中的at、mt和amt是什么意思啊?

热门文章

  1. 左眼跳灾,右眼跳财?
  2. 树莓派蓝牙连接就断开
  3. 在Unity中使用四叉树算法绘制地形
  4. wxpython中表格顶角怎么设置,wxpython listctrl并修复列宽
  5. 讯飞智能录音笔SR702让工作体验更佳
  6. 打印出ntdll.dll中所有函数名字和地址
  7. 解决git: 'subtree' is not a git command. See 'git --help'.
  8. 和数集团首款自研虚拟数字人上线,“始祖龙”带你跨山海,链未来
  9. 笔记本外接显示器闪烁(水波纹)解决方案
  10. 如何规划2023高企申报?