原文:http://blog.csdn.net/justdb/article/details/9621271 版权声明:本文为博主原创文章。

Linux系统的启动时通过读取不同的配置文件,执行相应的Shell脚本完成的。当然本文只是简单的从文件的角度分析,更深层次的本文没涉及。

主要读取了以下文件:

 /boot/grub/grub.conf
/etc/inittab
/etc/rc5.d(rc.d) - Seq
/etc/passwd (Login,input username and password)
/etc/shadow
/etc/profile:init the env var of user
/etc/profile.d/*.sh
~/.bash_profile
~/.bash_history
~/.bashrc
/etc/bashrc

我们首先来看grub.conf文件

 [root@larrywen grub]# ll menu.lst
lrwxrwxrwx. root root 7o?=o?= : menu.lst -> ./grub.conf
[root@larrywen grub]# pwd
/boot/grub
grub.conf文件内容:
default=
timeout=
splashimage=(hd0,)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux (2.6.-.el6.i686)
root (hd0,)
kernel /boot/vmlinuz-2.6.-.el6.i686 ro
root=UUID=ed98469d-857b-4ae5-91e4-118e0167ead7 rd_NO_LUKS rd_NO_LVM
LANG=en_US.UTF- rd_NO_MD quiet SYSFONT=lat arcyrheb-sun16 rhgb
crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
initrd /boot/initramfs-2.6.-.el6.i686.img

执行runlevel命令可以看到启动级别是5

 [root@larrywen grub]# runlevel
N

我们进入etc目录,可以看到很多rcX.d目录

 [root@larrywen grub]# cd /etc/init.d  

 [root@larrywen init.d]# cd /etc
[root@larrywen etc]# cd rc
rc rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/
rc6.d/ rc.d/ rc.local rc.sysinit

我们进入/etc/profile.d目录,可以看到很多可执行脚本

 [root@localhost test]# ll /etc/profile.d/*.sh
-rw-r--r--. 1 root root 1143 Apr 28 2010 /etc/profile.d/colorls.sh
-rw-r--r--. 1 root root 78 Apr 21 2010 /etc/profile.d/cvs.sh
-rw-r--r--. 1 root root 192 Dec 12 2005 /etc/profile.d/glib2.sh
-rw-r--r--. 1 root root 70 Aug 12 2010 /etc/profile.d/gnome-ssh-askpass.sh
-rwxr-xr-x. 1 root root 288 Sep 24 2009 /etc/profile.d/kde.sh
-rw-r--r--. 1 root root 2706 Sep 2 2010 /etc/profile.d/lang.sh
-rw-r--r--. 1 root root 108 Feb 7 2007 /etc/profile.d/less.sh
-rw-r--r--. 1 root root 933 Jun 30 2010 /etc/profile.d/qt.sh
-rw-r--r--. 1 root root 2142 Sep 8 2010 /etc/profile.d/udisks-bash-completion.sh
-rw-r--r--. 1 root root 269 May 19 2010 /etc/profile.d/vim.sh
-rw-r--r--. 1 root root 169 May 20 2009 /etc/profile.d/which2.sh

因为启动级别是5,所以我们进入rc5.d,可以看到很多文件,S表示当系统启动时执行,K表示当系统关闭时执行。

[root@localhost grub]# ll /etc/rc5.d/
K01certmonger K50netconsole K75ntpdate K89rdisc S11auditd S24avahi-daemon S26pcscd S82abrtd
K01smartd K50snmpd K76ipsec K95cgconfig S11portreserve S24nfslock S26udev-post S85qpidd
K02oddjobd K50snmptrapd K80kdump K95firstboot S12rsyslog S24openct S28autofs S90crond
K10psacct K50vsftpd K80sblim-sfcb S00microcode_ctl S13cpuspeed S24rpcgssd S30vboxadd S95atd
K10saslauthd K60nfs K80sssd S01sysstat S13irqbalance S24rpcidmapd S30vboxadd-x11 S97rhnsd
K15httpd K69rpcsvcgssd K84wpa_supplicant S02lvm2-monitor S13rpcbind S25cups S35vboxadd-service S98tog-pegasus
K20tomcat6 K73ypbind K86cgred S08ip6tables S15mdmonitor S25netfs S50bluetooth S99local
K36mysqld K74nscd K87restorecond S08iptables S22messagebus S26acpid S55sshd
K50dnsmasq K74ntpd K88nslcd S10network S23NetworkManager S26haldaemon S80postfix

我们再来看看用户主目录下的.bashrc文件内容

 [root@localhost grub]# cat ~/.bashrc
# .bashrc # User specific aliases and functions alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i' # Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

我们再来看看用户主目录下的.bash_profile文件内容

 [root@localhost grub]# cat ~/.bash_profile
# .bash_profile # Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH

完整的流程图如下图:

最新文章

  1. iOS之两个ImageView实现图片滚动
  2. Cookie使用时需要注意个数及大小限制
  3. 如何让JQuery报错-遁地龙卷风
  4. xml资源getStringArray(R.array.xxx)方法
  5. DeepLearning之路(三)MLP
  6. 用shell脚本写一个for循环
  7. Java高级之虚拟机垃圾回收机制
  8. SQLServer 跨服务器查询的两个办法
  9. 探究adroid活动
  10. django+celery+rabitmq
  11. 前端开发之JavaScript篇
  12. "未找到应用程序的“aps-environment”的权利字符串"
  13. vim不支持鼠标中键拷贝粘贴
  14. [EXP]ThinkPHP 5.0.23/5.1.31 - Remote Code Execution
  15. IntelliJ IDEA 启动tomcat服务器报Error running 'Unnamed': Address localhost:1099 is already in use错误的问题
  16. js之math 对象
  17. Spring Quartz 持久化解决方案
  18. MYSQL 什么时候用单列索引?什么使用用联合索引?(收集)
  19. Linux基础配置
  20. vue跳转页面传值怎么传?

热门文章

  1. [转]从网页Web上调用本地应用程序(.jar、.exe)的主流处理方法
  2. xib连线出错,模型保存cell状态(最后个Cell隐藏分割线),
  3. smarty模板原理和增删改查例题
  4. websocket 403
  5. java API 知识:截取特殊标识之前的字符串
  6. soap和wsdl的定义
  7. cocos2dx 3.x(场景(层)的生命周期)
  8. 快速激活JetBrains PhpStorm WebStorm系列产品
  9. [Android Tips] 5. INSTALL_PARSE_FAILED_MANIFEST_MALFORMED on Android-2.1
  10. Java基础之扩展GUI——使用对话框创建文本元素(Sketcher 4 creating text elements)