当前位置: 首页 > news >正文

做系统网站好台州市建设工程质量检测中心网站

做系统网站好,台州市建设工程质量检测中心网站,产品做优化好还是超级网站好,专门做水产海鲜的网站吗Linux的启动流程简析(以Debian为例) 正文#xff1a;前面的文章探讨BIOS和主引导记录的作用。那篇文章不涉及操作系统#xff0c;只与主板的板载程序有关。今天#xff0c;我想接着往下写#xff0c;探讨操作系统接管硬件以后发生的事情#xff0c;也就是操作系统的启动流…Linux的启动流程简析(以Debian为例) 正文前面的文章探讨BIOS和主引导记录的作用。那篇文章不涉及操作系统只与主板的板载程序有关。今天我想接着往下写探讨操作系统接管硬件以后发生的事情也就是操作系统的启动流程。这个部分比较有意思。因为在BIOS阶段计算机的行为基本上被写死了程序员可以做的事情并不多但是一旦进入操作系统程序员几乎可以定制所有方面。所以这个部分与程序员的关系更密切。 我主要关心的是Linux操作系统它是目前服务器端的主流操作系统。下面的内容针对的是Debian发行版因为我对其他发行版不够熟悉。 第一步、加载内核 操作系统接管硬件以后首先读入 /boot 目录下的内核文件。以我的电脑为例/boot 目录下面大概是这样一些文件   $ ls /bootconfig-3.2.0-3-amd64config-3.2.0-4-amd64grubinitrd.img-3.2.0-3-amd64initrd.img-3.2.0-4-amd64System.map-3.2.0-3-amd64System.map-3.2.0-4-amd64vmlinuz-3.2.0-3-amd64vmlinuz-3.2.0-4-amd64 第二步、启动初始化进程 内核文件加载以后开始运行第一个程序 /sbin/init它的作用是初始化系统环境。由于init是第一个运行的程序它的进程编号pid就是1。其他所有进程都从它衍生都是它的子进程。 第三步、确定运行级别 许多程序需要开机启动。它们在Windows叫做服务service在Linux就叫做守护进程daemon。 init进程的一大任务就是去运行这些开机启动的程序。但是不同的场合需要启动不同的程序比如用作服务器时需要启动Apache用作桌面就不需要。Linux允许为不同的场合分配不同的开机启动程序这就叫做运行级别runlevel。也就是说启动时根据运行级别确定要运行哪些程序。Linux预置七种运行级别0-6。一般来说0是关机1是单用户模式也就是维护模式6是重启。运行级别2-5各个发行版不太一样对于Debian来说都是同样的多用户模式也就是正常模式。 init进程首先读取文件 /etc/inittab它是运行级别的设置文件。如果你打开它可以看到第一行是这样的   id:2:initdefault:initdefault的值是2表明系统启动时的运行级别为2。如果需要指定其他级别可以手动修改这个值。 那么运行级别2有些什么程序呢系统怎么知道每个级别应该加载哪些程序呢…… 因为每个运行级别在/etc目录下面都有一个对应的子目录指定要加载的程序。   /etc/rc0.d/etc/rc1.d/etc/rc2.d/etc/rc3.d/etc/rc4.d/etc/rc5.d/etc/rc6.d 上面目录名中的rc表示run command运行程序最后的d表示directory目录。下面让我们看看 /etc/rc2.d 目录中到底指定了哪些程序。   $ ls /etc/rc2.dREADMES01motdS13rpcbindS14nfs-commonS16binfmt-supportS16rsyslogS16sudoS17apache2S18acpid... 可以看到除了第一个文件README以外其他文件名都是字母S两位数字程序名的形式。 字母S表示Start也就是启动的意思启动脚本的运行参数为start如果这个位置是字母K就代表Kill关闭即如果从其他运行级别切换过来需要关闭的程序启动脚本的运行参数为stop。 后面的两位数字表示处理顺序数字越小越早处理所以第一个启动的程序是motd然后是rpcbing、nfs……数字相同时则按照程序名的字母顺序启动所以rsyslog会先于sudo启动。 这个目录里的所有文件除了README就是启动时要加载的程序。如果想增加或删除某些程序不建议手动修改 /etc/rcN.d 目录最好是用一些专门命令进行管理。 第四步、加载开机启动程序 前面提到七种预设的运行级别各自有一个目录存放需要开机启动的程序。不难想到如果多个运行级别需要启动同一个程序那么这个程序的启动脚本就会在每一个目录里都有一个拷贝。这样会造成管理上的困扰如果要修改启动脚本岂不是每个目录都要改一遍 Linux的解决办法就是七个 /etc/rcN.d 目录里列出的程序都设为链接文件指向另外一个目录 /etc/init.d 真正的启动脚本都统一放在这个目录中。init进程逐一加载开机启动程序其实就是运行这个目录里的启动脚本。下面就是链接文件真正的指向。   $ ls -l /etc/rc2.dREADMES01motd - ../init.d/motdS13rpcbind - ../init.d/rpcbindS14nfs-common - ../init.d/nfs-commonS16binfmt-support - ../init.d/binfmt-supportS16rsyslog - ../init.d/rsyslogS16sudo - ../init.d/sudoS17apache2 - ../init.d/apache2S18acpid - ../init.d/acpid这样做的另一个好处就是如果你要手动关闭或重启某个进程直接到目录 /etc/init.d 中寻找启动脚本即可。比如我要重启Apache服务器就运行下面的命令   $ sudo /etc/init.d/apache2 restart/etc/init.d 这个目录名最后一个字母d是directory的意思表示这是一个目录用来与程序 /etc/init 区分。 第五步、用户登录 开机启动程序加载完毕以后就要让用户登录了。一般来说用户的登录方式有三种   1命令行登录   2ssh登录   3图形界面登录 这三种情况都有自己的方式对用户进行认证。 1命令行登录init进程调用getty程序意为get teletype让用户输入用户名和密码。输入完成后再调用login程序核对密码Debian还会再多运行一个身份核对程序/etc/pam.d/login。如果密码正确就从文件 /etc/passwd 读取该用户指定的shell然后启动这个shell。 2ssh登录这时系统调用sshd程序Debian还会再运行/etc/pam.d/ssh 取代getty和login然后启动shell。 3图形界面登录init进程调用显示管理器Gnome图形界面对应的显示管理器为gdmGNOME Display Manager然后用户输入用户名和密码。如果密码正确就读取/etc/gdm3/Xsession启动用户的会话。 第六步、进入 login shell 所谓shell简单说就是命令行界面让用户可以直接与操作系统对话。用户登录时打开的shell就叫做login shell。 Debian默认的shell是Bash它会读入一系列的配置文件。上一步的三种情况在这一步的处理也存在差异。 1命令行登录首先读入 /etc/profile这是对所有用户都有效的配置然后依次寻找下面三个文件这是针对当前用户的配置。   ~/.bash_profile~/.bash_login~/.profile 需要注意的是这三个文件只要有一个存在就不再读入后面的文件了。比如要是 ~/.bash_profile 存在就不会再读入后面两个文件了。 2ssh登录与第一种情况完全相同。 3图形界面登录只加载 /etc/profile 和 ~/.profile。也就是说~/.bash_profile 不管有没有都不会运行。 第七步打开 non-login shell 老实说上一步完成以后Linux的启动过程就算结束了用户已经可以看到命令行提示符或者图形界面了。但是为了内容的完整必须再介绍一下这一步。 用户进入操作系统以后常常会再手动开启一个shell。这个shell就叫做 non-login shell意思是它不同于登录时出现的那个shell不读取/etc/profile和.profile等配置文件。 non-login shell的重要性不仅在于它是用户最常接触的那个shell还在于它会读入用户自己的bash配置文件 ~/.bashrc。大多数时候我们对于bash的定制都是写在这个文件里面的。 你也许会问要是不进入 non-login shell岂不是.bashrc就不会运行了因此bash 也就不能完成定制了事实上Debian已经考虑到这个问题了请打开文件 ~/.profile可以看到下面的代码   if [ -n $BASH_VERSION ]; thenif [ -f $HOME/.bashrc ]; then. $HOME/.bashrcfifi 上面代码先判断变量 $BASH_VERSION 是否有值然后判断主目录下是否存在 .bashrc 文件如果存在就运行该文件。第三行开头的那个点是source命令的简写形式表示运行某个文件写成source ~/.bashrc也是可以的。 因此只要运行/.profile文件/.bashrc文件就会连带运行。但是上一节的第一种情况提到过如果存在/.bash_profile文件那么有可能不会运行/.profile文件。解决这个问题很简单把下面代码写入.bash_profile就行了。   if [ -f ~/.profile ]; then. ~/.profilefi 这样一来不管是哪种情况.bashrc都会执行用户的设置可以放心地都写入这个文件了。 Bash的设置之所以如此繁琐是由于历史原因造成的。早期的时候计算机运行速度很慢载入配置文件需要很长时间Bash的作者只好把配置文件分成了几个部分阶段性载入。系统的通用设置放在 /etc/profile用户个人的、需要被所有子进程继承的设置放在.profile不需要被继承的设置放在.bashrc。 顺便提一下除了Linux以外 Mac OS X 使用的shell也是Bash。但是它只加载.bash_profile然后在.bash_profile里面调用.bashrc。而且不管是ssh登录还是在图形界面里启动shell窗口都是如此。来源http://www.ruanyifeng.com转载于:https://blog.51cto.com/11134889/2336153
http://www.pierceye.com/news/251951/

相关文章:

  • 网站建设管理报告网站建设专家北京注安
  • 免费网站生成软件网站备案中的网站名称
  • 桐庐做网站手机里编辑 Wordpress
  • 外网怎么进入萧山网站优化
  • 做资源下载网站好吗婚恋网站建设公司排名
  • 网站后台管理系统管理员登录wordpress页面模板下载地址
  • 网站用户体验网络科技公司网站制作
  • seo中文全称是什么360搜索怎么做网站自然优化
  • 青岛网站建设技术外包文本资料分享网站 建设
  • 做好网站建设工作wordpress转发微信缩略图
  • 马鞍山网站开发流程设计师免费资源导航
  • 成功的网站不仅仅是优化排视频网站建设应该注意什么
  • 如何制作网站和软件查询关键词密度网站的网址有哪些
  • 网站服务器查询平台贵阳网站改版
  • 怎样查看网站总浏览量寿县有做网站开发的吗
  • 东莞网站建设价格价格网建企业
  • 做播放器电影网站需要多少钱6网络工程师证
  • dw怎么做网站标题图标网站建设进度表 免费下载
  • 西安哪些做网站的公司好做电子商务网站的意义
  • 圣融网站建设包装设计网站是什么样子的
  • 网站建设的利润设计宝
  • 厦门网站制作案例dede做手机网站
  • 网站建设 环保 图片重庆信息网
  • 做网站的主流软件珠海网站建设珠海
  • 江门市网站建设 熊掌号wordpress分类不显示图片
  • 上海做网站技术有趣的网站小游戏
  • 网站建设需要哪些内容中国建设银行对公网站
  • 网站菜单实现原理全网营销外包
  • 江阴招聘网站建设学徒开源网站开发文档下载
  • 金融网站开发公司六安城市网新闻