ubuntu启动时执行启动脚本流程

原创 2015年04月19日 13:54:11

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

查阅资料后总结如下:

首先:

/etc/rc.d链接目标为:/etc

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


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、启动登录管理器,等待用户登录


系统服务

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

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

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

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

手动控制服务

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

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

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

具体都有那些系统服务脚本,可以看另一篇文章:《ubuntu中init.d文件夹中常用系统服务脚本》


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

第一类upstart,或者叫job,由init管理,配置文件目录/etc/init,~/.init

第二类叫service,由rc.d管理,配置文件目录/etc/init.d,以及/etc/rc.local文件

第三类叫cron,由contab管理,使用crontab进行配置

第四类叫startup,由xdg管理,配置文件目录/etc/xdg/autostart,以及~/.config/autostart

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

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

1. 开机启动时自动运行程序

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

/etc/rc或

/etc/rc.d 或

/etc/rc?.d

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

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

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. 退出登录时自动运行程序

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

/.bash_logout。

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

4. 定期自动运行程序

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

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

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.

Ubuntu下添加开机启动脚本

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

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

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

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


版权声明:本文为ListenerRi原创, 转载请注明出处

Ubuntu添加开机启动执行脚本

Ubuntu添加开机启动执行脚本方法一:编辑rc.loacl脚本Ubuntu开机之后会执行/etc/rc.local文件中的脚本, 所以我们可以直接在/etc/rc.local中添加启动脚本。 当...
  • upshi
  • upshi
  • 2016年12月26日 11:35
  • 6911

Ubuntu下添加开机启动脚本(转载)

转载于王恒's Blog 1、方法一,编辑rc.loacl脚本  Ubuntu开机之后会执行/etc/rc.local文件中的脚本, 所以我们可以直接在/etc/rc.local中添加启动脚本...
  • u010228612
  • u010228612
  • 2016年09月13日 16:16
  • 880

Ubuntu 创建开机自启动脚本

Ubuntu 创建开机自启动脚本的步骤如下: 1) 将你的启动脚本复制到 /etc/init.d目录下 以下假设你的脚本文件名为 test。 2) 设置脚本文件的权限 $ sudo...
  • YPLee_8
  • YPLee_8
  • 2015年12月17日 15:41
  • 6134

Ubuntu下添加开机启动脚本

1、方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚本, 所以我们可以直接在/etc/rc.local中添加启动脚本。 当然要添加到语句:exit...
  • hktkfly6
  • hktkfly6
  • 2017年05月02日 11:32
  • 825

ubuntu添加开机启动脚本(服务,app)

1、方法一,编辑rc.loacl脚本  Ubuntu开机之后会执行/etc/rc.local文件中的脚本, 所以我们可以直接在/etc/rc.local中添加启动脚本。 当然要添加到语句:exi...
  • u011774239
  • u011774239
  • 2016年03月30日 22:00
  • 2206

ubuntu 下 init.d 服务启动脚本编写

1、在/etc/init.d/ 下以管理员权限新建文件,在本例中为location_server. 2、使用以下模板修改启动脚本的内容 #!/bin/bash ### BEGIN INIT INF...
  • littlefishzhang
  • littlefishzhang
  • 2012年11月20日 12:49
  • 22103

ubuntu下/etc/rc.local和/etc/init.d/rc.local的区别

在ubuntu下要把一个程序加入开机启动,一般可以通过修改rc.local来完成,但ubuntu下有两个rc.local文件。分别是/etc/rc.local和/etc/init.d/rc.local...
  • u013401853
  • u013401853
  • 2017年05月02日 11:42
  • 2149

ubuntu中init.d文件夹中常用系统服务脚本

acpi-support 高级电源管理支持 acpid acpi守护程序.这两个用于电源管理,非常重要 alsa 声音子系统 alsa-utils anacron cron的子系统,将系统关闭...
  • Listener_ri
  • Listener_ri
  • 2015年04月19日 14:28
  • 864

Ubuntu 16.04 开机运行程序或脚本

这里说一种方法:修改rc.local 第一步,创建一个脚本,比如run.sh,想执行的命令、运行的程序都写在里面。 第二步,设置run.sh为可执行。chmod +x run.sh 第三...
  • anod
  • anod
  • 2017年09月19日 14:47
  • 1477

Ubuntu 16添加开机启动脚本

1、新建个脚本文件my_script.sh #!/bin/sh . /home/clark/py3env/bin/activate uwsgi --ini /home/clark/p...
  • A18373279153
  • A18373279153
  • 2017年11月27日 17:03
  • 280
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ubuntu启动时执行启动脚本流程
举报原因:
原因补充:

(最多只允许输入30个字)