关于linux 的启动

 linux的关键启动脚本

Linux的第一个进程是0号进程,一般认为0号进程创建了1号进程,1号进程建了所有的kernel进程,1号进程是所有进程的祖先。1号进程又称init进程,init进程是所有进程之父。

init读取/etc/inittab,以下是debian系统的inittab,init就是读取这个文件获取的第一个脚本,请注意里面的粗体字,会对您理解linux的运行有一定的帮助。

# /etc/inittab: init(8)configuration.

# $Id: inittab,v 1.912002/01/25 13:35:21 miquels Exp $

# The default runlevel.默认的运行等级 2 是多用户形式,这个数字也可以是1获其他的数字,关于运行等级,请见下文。在终端下,直接执行runlevel看到当前系统的默认运行等级。

id:2:initdefault:

# Boot-time systemconfiguration/initialization script.

# This is run first except when booting inemergency (-b) mode.下面的命令是第一个执行的,除非是在紧急模式下启动。

可以看到,第一个运行的程序是/etc/init.d/rcS,也就是说rcS就是我们系统的初始化脚本。rcS是系统的初始化脚本,而在rcS文件中,直接执行了rc程序,在rc程序中,会执行当前系统默认运行等级下的所有要运行的脚本,这些脚本存放在rc?.d文件夹中(“?”是一个数字,运行等级是2的话就是rc2.d文件夹),在rc?.d文件夹中是以{KS}{num}{name}命名的链接,这些链接至/etc/init.d/文件夹下的脚本,如果是K,那么意味着向/etc/init.d/下对应name的脚本传入stop参数,如果是S开头的链接,意味着传入start参数

si::sysinit:/etc/init.d/rcS

到此,和我们的开机启动关系密切的代码已经结束了,当然,不排除在用户登录之后有针对用户的开机启动项目

# What to do insingle-user mode.

~~:S:wait:/sbin/sulogin

1.2 linux启动shell脚本的一般书写规则

在/etc/init.d/下的脚本大都遵循一定的规则,其在关键的一条就是要接收start|stop|restart参数,分别表示启动、关闭、重启。当系统启动时,rc脚本会根据/etc/rc?.d/下脚本的名称(S或K开头)传入对应的参数至/etc/init.d/下的脚本。

以下是可参考的系统启动脚本和写法

#!/bin/bash

case "$1"in

        start)

                echo "Starting Program..."

               ;;在此写入启动程序的脚本,写法通一般shell脚本的写法,可以使用函数

                echo “ended”

                ;;

        stop)

                echo "Stopping Program..."

                ;;在此写入停止程序的脚本,写法通一般shell脚本的写法,可以使用函数

                echo “stopped”

                ;;

        restart)

                echo "Restarting Program..."

                ;;在此写入重启程序的脚本,写法通一般shell脚本的写法,可以使用函数

                echo "Restarted"

                ;;

        *)

                echo "Usage: $0{start|stop|restart|status}"

                exit 0

                ;;

esac

exit 0;

如果您想开机启动自己的脚本,先在/etc/init.d/目录下增加上述格式的脚本,再给此脚本可执行权限,再使用update-rc.d 你的脚本名称 start 88 2 . 注意,在2后面先是一个空格,再是一个“.”,2是您系统的默认运行等级,88是您的脚本的运行次序,是说在系统的第几个运行,您也可以在其他的数字,start是说要创建一个以S开头的链接,执行此命令,将在/etc/rc2.d/下创建“S88你的脚本名称”的一个链接,开机之后,此脚本将自动运行。如果要删除这个自动运行,只需要删除对应的链接即可。

特别注意:在一些参考资料上,有写使用命令“ln –s 脚本名称 目标链接名称”来创建对应的链接,但经过测试,在debian系统上不能成功启动。

 

1.3 开机启动的其他方法

要开机启动某个脚本,也可以将此脚本直接在/etc/rc.local命令中运行,需要注意的是这里添加的方法是在所有rc?.d目录中的脚本都被运行过后才运行。这种方法是一种比较快捷的方法。

甚至可以在/etc/inittable或/etc/init.d/rc文件中直接加入,但这种方法是不被提倡的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值