busybox inittab文件分析

首先,先来看下我的/etc/inittab是怎么样的,然后再详细说明。

[cpp]  view plain copy
  1. [root@user/]#cat /etc/inittab   
  2. ::sysinit:/etc/init.d/rcS  
  3. console::respawn:-/bin/sh  
  4. ::once:/usr/sbin/telnetd -l /bin/login  
  5. ::ctrlaltdel:/sbin/reboot  
  6. ::shutdown:/bin/umount -a -r  

这个配置文档的内容什么时候会被执行呢?

当用户进程init启动以后,该进程会读取该配置文档中的内容,然后执行。而在嵌入式系统中,用户进程init通常就是由busybox产生的/linuxrc。

该文档中每一行的格式如下:

<id>:<runlevels>:<action>:<process>

id:该字段通常是busybox的init进程来用来寻找controlling tty,也就是终端设备。这个字段的前面会被加上/dev/。在上面的例子中我的终端设备就是/dev/console。

runlevels:该字段被忽略。也就是说,busybox的init不支持运行级别。

action:该字段用于描述后面process的运行方式。在busybox中,有效的action包括如下几种:

     sysinit——在系统启动阶段,后面的process将被执行。在上面例子中,执行rcS脚本。

     respawn——当后面的process进程结束时,该进程又会被重启。

     askfirst——这个类似于上面的respawn,但是在运行process之前,它会打印"Please press Enter to activate this console.",然后等待用户按下Enter来启动该

                     process。通常askfirst是用于启动终端设备的,如果不想看到这个提示,就像我那样使用respawn,而非askfirst.

     wait——init进程会等待该process执行完毕,然后执行下一项。

     once——process只会执行一次。在上面的例子中,执行telnetd守护进程,-l参数表示连接时,使用login登录。同时执行login程序。

     restart——重新启动init进程时执行process.

     ctrlaltdel——当Ctrl+Alt+Del三个键同时按下后,init进程就会收到SIGINT信号,此时运行process。

     shutdown——在系统关机的时候执行process。在上面的例子中,在关机时卸载了所有已挂载的设备。

process:该字段表示要执行的程序和相应的参数。

[cpp]  view plain copy
  1. console::respawn:-/bin/sh  
这句表明:/bin/sh在/dev/console这个tty上被执行。“-”表示该shell为 login shell。


如果没有inittab文件,init进程将使用默认的行为:
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::restart:/sbin/init

先介绍login shell和non-login shell概念:

login shell:取得bash时需要完整的登录流程。就是说通过输入账号和密码登录系统,此时取得的shell称为login shell

non-login shell:取得sbash接口的方法不需要重复登录的举动。如以X Window登录登录linux后,再以X的图形界面启动终端机,此时那个终端机并没有需要输入账号和密码,那个bash环境就是non-login shell。在原本的bash环境下再次执行bash命令,同样也没有输入账号密码就进入新的bash环境(前一个bash的子进程),新的bash也是non-login shell。

说了半天,那这两个shell到底有什么区别?

login shell:此种方式登录时,shell会重新读取/etc/profile和~/.bash_profile来应用新的环境变量。

non-login shell:此时shell不会读取/etc/profile和~/.bash_profile,而是读取~/.bashrc来应用新的环境变量。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值