zoukankan      html  css  js  c++  java
  • ubuntu启动流程和要读取相关文件

    当前系统环境为: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 。

    http://blog.csdn.net/listener_ri/article/details/45128569

     

    【转载】ubuntu下添加开机启动项

    原文地址:http://www.cnblogs.com/myitm/archive/2011/10/16/2214448.html

    这里说明,Ubuntu 中系统没有了RH系统中的 chkconfig 命令 !

    可用一些小工具来管理 Ubuntu 的启动选项: 小工具 rcconf#sudo apt-get rcconf #sudo apt-get install rcconf root 下运行: #sudo rcconf 功能更全的工具sysv-rc-conf #sudo apt-get update #sudo apt-get install sysv-rc-conf 运行:#sudo sysv-rc-conf 也可以直接加入启动程序,例如把 /etc/init.d/red5 加入到系统自动启动列表中: #sudo sysv-rc-conf red5 on 其他使用方法见: google::Ubuntu::sysv-rc-conf 命令用法

    也可以直接修改 直接改 /etc/rc0.d ~ /etc/rc6.d 和 /etc/rcS.d 下的东西,S开头的表示启动,K开头的表示不启动, 例如:想关闭 Red5 的开机自动启动,只需 #sudo mv /etc/rc2.d/S20red5 /etc/rc2.d/K20red5 就可以了。

    Ubuntu自动启动程序

    首 先,linux随机启动的服务程序都在/etc/init.d这个文件夹里,里面的文件全部都是脚本文件(脚本程序简单的说就是把要运行的程序写 到一个 文件里让系统能够按顺序执行,类似windows下的autorun.dat文件),另外在/etc这个文件夹里还有诸如名为rc1.d, rc2.d一直到rc6.d的文件夹,这些都是linux不同的runlevel,我们一般进入的X windows多用户的运行级别是第5级,也就是rc5.d,在这个文件夹下的脚本文件就是运行第5级时要随机启动的服务程序。需要注意的是,在每个rc (1-6).d文件夹下的文件其实都是/etc/init.d文件夹下的文件的一个软连接(类似windows中的快捷方式),也就是说,在 /etc/init.d文件夹下是全部的服务程序,而每个rc(1-6).d只链接它自己启动需要的相应的服务程序!

    要 启动scim (某一程序),我们首先要知道scim程序在哪里,用locate命令可以找到,scim在/usr/bin/scim这里,其中usr表 示是 属于用户的,bin在linux里表示可以执行的程序。这样,我就可以编写一个脚本程序,把它放到/etc/init.d里,然后在rc5.d里做一个相 应的软链接就可以了。

    这个脚本其实很简单,就两行:

    #!/bin/bash

    /usr/bin/scim

    第一行是声明用什么终端运行这个脚本,第二行就是要运行的命令。

    还 需要注意的一点是,在rc5.d里,每个链接的名字都是以S或者K开头的,S开头的表示是系统启动是要随机启动的,K开头的是不随机启动的。这 样,你就可以知道,如果我要哪个服务随机启动,就把它名字第一个字母K改成S就可以了,当然,把S改成K后,这个服务就不能随机启动了。因此,我这个链接 还要起名为SXXX,这样系统才能让它随机启动。

    在RH下,rc.local是默认启动的最后一个脚本文件,所以,
    如果你想要随机启动,还有一种方法就是在rc.local的尾部加入/usr/bin/scim,这样就可以了。

    Linux 自动启动程序

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

    Linux 加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文件(该文件通常是系统最后启动的脚本),在文件最末加上一行“xinit”或“startx”,可以在开机启动后直接进入X-Window。

    2.登录时自动运行程序

    用 户登录时,bash首先自动执行系统管理员建立的全局登录script :/ect/profile。然后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”,运行“crontab cronFile”命令后,每当元月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。?9 12:00 2000-11-09 12:00时候自动发一标题为“Have a lunch”,内容为plan.txt文件内容的邮件给Roger。er。ger。er。

    Ubuntu 开机自动挂载windows分区

    要挂载NTFS格式分区,需要NTFS-3g这个软件。它短小精悍,而且功能强大。 NTFS-3g是一个开源软件,它支持在Windows下面读写NTFS格式的分区。它非常的快速,同时也很安全。它支持Windows 2000、XP和2003,并且支持所有的符合POSIX标准的磁盘操作。

    首先要编辑sources.list #sudo gedit /etc/apt/sources.list

    Ubuntu Drapper添加: deb http://givre.cabspace.com/ubuntu/ dapper main main-all deb http://ntfs-3g.sitesweetsite.info/ubuntu/ dapper main main-all deb http://flomertens.keo.in/ubuntu/ dapper main main-all Ubuntu Edgy添加: deb http://givre.cabspace.com/ubuntu/ edgy main deb http://ntfs-3g.sitesweetsite.info/ubuntu/ edgy main deb http://flomertens.keo.in/ubuntu/ edgy main 同时必须导入GPG-Key,可以这样: #wget http://flomertens.keo.in/ubuntu/givre_key.asc -O- | sudo apt-key add - #wget http://givre.cabspace.com/ubuntu/givre_key.asc -O- | sudo apt-key add - 现在更新一下源: #sudo aptitude update

    正式安装

    在“终端”下面运行: #sudo apt-get install ntfs-3g

    配置NTFS-3g

    首先看一些硬盘分区的分区类型 #sudo fdisk -l

    现在就可以修改 /etc/fstab,来让Ubuntu启动的时候自动挂载NTFS分区了。但是首先请备份一下这个文件: #sudo cp /etc/fstab /etc/fstab.bak

    建立挂载点,譬如挂载在 /media/windows 下面 #sudo mkdir /media/windows

    现在可以在 /etc/fstab 的后面添加 /dev/hda1 /media/ ntfs-3g defaults,locale=zh_CN.utf8 0 0 根据自己的情况进行修改。

    一些示例

    挂载 /dev/hda3 添加 /dev/hda3 /media/windows ntfs-3g ro,locale=zh_CN.utf8,uid=1000 0 0

    关于自己的locale

    可以用下面的命令查看所有的locale #locale -a

    如果不想重新启动,就可以 #sudo umount -a #sudo mount -a 最后一个挂载FAT分区的命令 #sudo mount /dev/hda3 /media/windows/ -t vfat -o iocharset=utf8,umask=000

    当然可以在/etc/fstab里面添加 /dev/hda3 /media/windows vfat iocharset=utf8,umask=000 0 0

    Openfire随着Ubuntu自动启动

    openfire缺省情况下,是不随机启动的。为了解决每次都要手工启动的麻烦,我编写了一个脚本,放在/etc/init.d目录里面 #sudo vim /etc/init.d/openfire 内容如下:

    #!/bin/sh

    openfire_start(){ /etc/openfire/bin/openfire start }

    openfire_stop(){ /etc/openfire/bin/openfire stop }

    case $1 in start) openfire_start ;; stop) openfrie_stop ;; *) echo ‘Usage:openfire start|stop’ ;; esac

    原文地址:http://www.cnblogs.com/myitm/archive/2011/10/16/2214448.html

    linux启动是自动加载的几个文件说明bashrc等

    (1)/etc/profile 全局(公有)配置,不管是哪个用户,登录时都会读取该文件。

    (2)/ect/ Ubuntu没有此文件,与之对应的是/ect/bash. 它也是全局(公有)的 bash执行时,不管是何种方式,都会读取此文件。

    (3)~/.profile 若bash是以login方式执行时,读取~/.,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。 另外,图形模式登录时,此文件将被读取,即使存在~/.和~/.bash_login。

    (4)~/.bash_login 若bash是以login方式执行时,读取~/.,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。

    (5)~/. Unbutu默认没有此文件,可新建。 只有bash是以login形式执行时,才会读取此文件。通常该配置文件还会配置成去读取~/.

    (6)~/. 当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件。

    (7)~/.bash_logout 注销时,且是longin形式,此文件才会读取。也就是说,在文本模式注销时,此文件会被读取,图形模式注销时,此文件不会被读取。

    下面是在本机的几个例子: 1. 图形模式登录时,顺序读取:/etc/profile和~/.profile 2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.和~/. 3. 文本模式登录时,顺序读取:/etc/bash.,/etc/profile和~/. 4. 从其它用户su到该用户,则分两种情况: (1)如果带-l参数(或-参数,–login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.,/etc/profile和~/.。 (2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.和~/. 5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout 6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。 7. 上面的例子凡是读取到~/.的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。

    原文链接:http://www.liangpeng.net/y2009/m07/linuxqidongshizidongjiazaidejigewenjianshuomingbashrcdeng_742.html

    linux启动是自动加载的几个文件说明bashrc等 .

    linux启动是自动加载的几个文件说明bashrc等

    (1)/etc/profile 全局(公有)配置,不管是哪个用户,登录时都会读取该文件。

    (2)/ect/ Ubuntu没有此文件,与之对应的是/ect/bash. 它也是全局(公有)的 bash执行时,不管是何种方式,都会读取此文件。

    (3)~/.profile 若bash是以login方式执行时,读取~/.,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。 另外,图形模式登录时,此文件将被读取,即使存在~/.和~/.bash_login。

    (4)~/.bash_login 若bash是以login方式执行时,读取~/.,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。

    (5)~/. Unbutu默认没有此文件,可新建。 只有bash是以login形式执行时,才会读取此文件。通常该配置文件还会配置成去读取~/.

    (6)~/. 当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件。

    (7)~/.bash_logout 注销时,且是longin形式,此文件才会读取。也就是说,在文本模式注销时,此文件会被读取,图形模式注销时,此文件不会被读取。

    下面是在本机的几个例子: 1. 图形模式登录时,顺序读取:/etc/profile和~/.profile 2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.和~/. 3. 文本模式登录时,顺序读取:/etc/bash.,/etc/profile和~/. 4. 从其它用户su到该用户,则分两种情况: (1)如果带-l参数(或-参数,–login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.,/etc/profile和~/.。 (2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.和~/. 5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout 6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。 7. 上面的例子凡是读取到~/.的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。

     

     

     

     

     

     

  • 相关阅读:
    【pycharm 密钥】pycharm 2017 密钥
    【jenkins 忘记密码】忘记Jenkins管理员密码的解决办法
    【git 报错】Could not read from remote repository.Please make sure you have the correct access rights.
    【pycharm 警告】unittest RuntimeWarning: Parent module ” not found while handling absolute import
    【python接口自动化测试教程】00---00章节就代表开篇吧
    【python-strip】Python strip()方法
    认识map-reduce
    subprocess实用手册
    k8s学习路线
    nginx小知识
  • 原文地址:https://www.cnblogs.com/gary-guo/p/7501145.html
Copyright © 2011-2022 走看看