【linux】init.d用法

Linux 启动时需要哪些步骤呢?本文将详细描述不同的运行级在启动中的作用。
对于那些在DOS/Win9x/NT 平台下的高级用户而言,Linux 似乎是一个怪物。没有config.sys ,没有 autoexec.bat,具有个人特色的机器配置不知道从何开始。
需要说明的是,很多人认为Linux 是Unix 的一个克隆,但是,这种说法对于Linux 是不公平的。Linux 比Unix更加开放,功能更强大。我们应该称之为GNU/Linux 。


Linux 启动时,运行一个叫做init 的程序,然后由它来启动后面的任务,包括多用户环境,网络等。
那么,到底什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1 到6 ,具有不同的功能。这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是那些放在/etc/rc.d 目录下的文件。
大多数的Linux 发行版本中,启动的是/etc/rc.d/init.d。这些脚本被ln 命令来连接到 /etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6)
例如/etc/rc.d/rc2.d 下面的S10network 就是连接到/etc/rc.d/init.d下的network 脚本的。
因此,我们可以知道,rc2.d 下面的文件就是和运行级2 有关的。

文件开头的S 代表start 就是启动服务的意思,后面的数字10 就是启动的顺序。例如,在同一个目录下,你还可以看到 S80postfix 这个文件,80 就是顺序在 10 以后,因为没有启动网络的情况下,启动postfix 是没有任何作用的。
再看一下 /etc/rc.d/rc3.d,可以看到文件S60nfslock,但是这个文件不存在于 /etc/rc.d/rc2.d 目录下。NFS 要用到这个文件,一般用在多用户环境下,所以放在rc3.d 目录下。

另外,在/etc/rc.d/rc2.d 还可以看到那些K 开头的文件,例如
/etc/rc.d/rc2.d/K45named ,K 代表 kill 。
标准的Linux运行级为3 或者5 ,如果是3 的话,系统就在多用户状态。如果是5的话,则是运行着X Window 系统。如果目前正在3或5,而你把运行级降低到2的话,init 就会执行 K45named 脚本。
不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab)

# 缺省的运行级,RHS 用到的级别如下:
# 0 - 停机(千万不要把initdefault 设置为0 )
# 1 - 单用户模式
# 2 - 多用户,但是没有 NFS
# 3 - 完全多用户模式
# 4 - 没有用到
# 5 - X11
# 6 - 重新启动 (千万不要把initdefault 设置为6 )
#
对各个运行级的详细解释:
0 为停机,机器关闭。
1 为单用户模式,就像Win9x 下的安全模式类似。
2 为多用户模式,但是没有NFS 支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。
例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是 X11 ,进到 X Window 系统了。
6 为重启,运行 init 6 机器就会重启。
不同的运行级有不同的用处,也应该根据自己的不同情形来设置。例如,如果丢失了root 口令,那么可以让机器启动进入单用户状态来设置。在启动后的 lilo 提示符下输入:
init=/bin/sh rw
就可以使机器进入运行级1 ,并把 root 文件系统挂为读写。他会跳过所有系统认证,让你使用passwd 程序来改变root口令,然后启动到一个新的运行级。

### init.d的作用 `/etc/init.d` 是 Linux 系统中的一个重要目录,它包含了一系列用于启动、停止、重启和管理系统服务的脚本文件。这些脚本通常被称为 init 脚本或服务脚本。`/etc/init.d` 目录实际上是 `/etc/rc.d/init.d` 的软链接,这种设计是为了简化路径并提高可读性。这些脚本类似于 Windows 中的注册表项,在系统启动时,某些指定的脚本会被自动执行以初始化系统服务。 在 Linux 系统引导过程中,init 程序会根据运行级别(runlevel)来决定哪些服务需要启动或停止。运行级别是一个从 0 到 6 的数字,每个级别对应不同的系统状态。例如,运行级别 3 是多用户模式,而运行级别 5 是图形界面模式。系统启动时,init 程序会读取 `/etc/inittab` 文件,并根据其中的配置加载相应的服务脚本。这些服务脚本主要位于 `/etc/rc.d/init.d` 目录下,并通过符号链接与 `/etc/rc.d/rcn.d` 目录(其中 `n` 表示运行级别)相关联。例如,`/etc/rc.d/rc2.d/S10network` 是指向 `/etc/rc.d/init.d/network` 脚本的符号链接,表示在网络运行级别 2 下启动网络服务。 ### init.d的使用方法 要使用 `/etc/init.d` 中的服务脚本,通常可以通过命令行调用这些脚本来执行操作,如启动、停止、重启或检查服务的状态。基本的命令格式如下: ```bash /etc/init.d/<service_name> <action> ``` 其中 `<service_name>` 是要操作的服务名称,而 `<action>` 可以是 `start`、`stop`、`restart` 或 `status` 等操作。 例如,如果有一个名为 `example` 的服务脚本位于 `/etc/init.d/` 目录下,则可以使用以下命令来控制该服务: - 启动服务: ```bash /etc/init.d/example start ``` - 停止服务: ```bash /etc/init.d/example stop ``` - 重启服务: ```bash /etc/init.d/example restart ``` - 检查服务状态: ```bash /etc/init.d/example status ``` 此外,还可以通过 `chkconfig` 或 `update-rc.d` 工具来管理服务在不同运行级别下的启动和停止状态。这些工具可以帮助用户更方便地配置服务在系统启动时是否自动运行。 ### 示例 下面是一个简单的 `/etc/init.d` 脚本示例,用于启动一个名为 `example` 的自定义服务: ```bash #!/bin/bash # description: Example service script case "$1" in start) echo "Starting example service..." # 在这里添加启动服务的命令 ;; stop) echo "Stopping example service..." # 在这里添加停止服务的命令 ;; restart) $0 stop $0 start ;; status) echo "Checking status of example service..." # 在这里添加检查服务状态的命令 ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac exit 0 ``` 保存此脚本为 `/etc/init.d/example` 并赋予其可执行权限: ```bash chmod +x /etc/init.d/example ``` 为了使该服务在特定运行级别下自动启动,可以创建相应的符号链接到 `/etc/rc.d/rcn.d` 目录中。例如,在运行级别 3 下启动该服务,可以使用以下命令: ```bash ln -s /etc/init.d/example /etc/rc.d/rc3.d/S99example ``` 这样,当系统进入运行级别 3 时,`example` 服务将在其他服务之后启动(S99 表示启动顺序)。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值