Linux 目录之 /etc/init.d/ 介绍

文章目录


注意:以 System V init 或者 Upstart 为初始化系统的 Linux 讨论目录 /etc/init.d/ 才有意义。



一、关于目录 /etc/init.d/

/etc/init.d/ 这个目录到底是干嘛的呢?

目录 /etc/init.d/ 中包含许多系统服务的启动和停止脚本。它控制着所有从 acpid 到 x11-common 的各种事务。当然,/etc/init.d/ 远远没有这么简单。
(译者注:acpid 是 Linux 操作系统新型电源管理标准 ;X11 也叫做 X Window 系统,X Window 系统 (X11 或 X)是一种位图显示的视窗系统。它是在 Unix 和类 Unix 操作系统以及 OpenVMS 上建立图形用户界面的标准工具包和协议,并可用于几乎已有的现代操作系统)。

当你查看 /etc 目录时,你会发现许多 rc#.d 形式存在的目录(这里#代表一个指定的初始化级别,范围是0~6)。在这些目录之下,包含了许多对进程进行控制的脚本。这些脚本要么以“K”开头,要么以“S”开头。以“K”开头的脚本运行在以“S”开头的脚本之前。这些脚本放置的地方,将决定这些脚本什么时候开始运行。有时候你希望能在不使用 kill 或 killall 命令的情况下,能干净的启动或杀死一个进程。这就是 /etc/init.d/ 能够派上用场的地方了!

如果你在使用 Fedora 系统,你可以找到这个目录:/etc/rc.d/init.d。实际上无论 init.d/ 放在什么地方,它都发挥着相同的作用。

为了能够使用init.d目录下的脚本,你需要有 root 权限。每个脚本都将被作为一个命令运行,该命令的结构大致如下所示:

/etc/init.d/command 选项

command 是实际运行的命令,选项可以有如下几种:

start
stop
reload
restart
force-reload

大多数的情况下,你会使用 start,stop,restart 选项。例如,如果你想关闭网络,你可以使用如下形式的命令:

/etc/init.d/networking stop

又比如,你改变了网络设置,并且需要重启网络。你可以使用如下命令:

/etc/init.d/networking restart

目录 /etc/init.d/ 下常用初始化脚本有:

networking
samba
apache2
ftpd
sshd
dovecot
mysql

当然,你可能有更多常用的脚本,这个取决于你安装了什么 Linux 操作系统。

其实目录 /etc/init.d 是符号链接文件,实际上是链接到目录 /etc/rc.d/init.d,你可以通过以下命令验证:

[root@htlwk0001host ~]# ll /etc/init.d
lrwxrwxrwx. 1 root root 11 5月  11 2019 /etc/init.d -> rc.d/init.d

or

[root@htlwk0001host ~]# ls -ld /etc/init.d
lrwxrwxrwx. 1 root root 11 5月  11 2019 /etc/init.d -> rc.d/init.d

建立方法是:

[root@htlwk0001host ~]# ln -s /etc/rc.d/init.d /etc/init.d



二、关于目录 /etc/rc.d/init.d/

大多数的 Linux 发行版本中,启动的是目录 /etc/rc.d/init.d/ 下的服务,这个目录下存放都是实际的服务脚本文件。

Linux 的每个运行级别,在 /etc/rc.d/ 下都有一个子目录分别是 rc0.d,rc1.d …… rc6.d,其实这些 rcN.d/ 目录下存放的都是链接到目录 /etc/rc.d/init.d/ 下部分脚本链接文件。每个级别要执行的服务就在相对应的目录下,比如级别 5 要启动的服务就都放在 rc5.d/ 下,但是放在这个 rc5.d/ 下的都是一些链接文件,链接到 /etc/rc.d/init.d/ 中相对应的实际脚本文件。

例如,目录 /etc/rc.d/rc2.d/ 下的 S10network 链接文件,实际是链接到目录 /etc/rc.d/init.d/ 下的脚本文件 network。

/etc/rc.d/rc2.d/ 下面的文件就是和运行级 2 有关的。文件开头的 S 代表 start 就是启动服务的意思,后面的数字 10 就是启动的顺序。例如,在同一个目录下,你还可以看到 S80postfix 这个文件,80 就是顺序在 10 以后,因为没有启动网络的情况下,启动 postfix 是没有任何作用的。

在这里插入图片描述



三、关于文件 /etc/rc.local

/etc/rc.local 也是我经常使用的一个脚本。该脚本是在系统初始化级别的脚本运行之后再执行的,因此可以安全地在里面添加你想在系统启动之后执行的脚本。常见的情况是你可以在里面添加 NFS 挂载 /mount 脚本。此外,你也可以在里面添加一些调试用的脚本命令。例如,我就碰到过这种情况:samba 服务总是无法正常运行,而检查发现,samba 是在系统启动过程中就该启动执行的,也就是说 samba守护程序配置保证了这种功能本应该正确执行。碰到这种类似情况,一般我也懒得花大量时间去查为什么,我只需要简单的在 /etc/rc.local 脚本里加上这么一行:/etc/init.d/samba start,这样就成功的解决了samba 服务异常的问题。



四、/etc/init.d/ 和 service 文件

service 文件是使用 systemd 作为初始化程序的 Linux 系统才有的服务文件,叫“服务配置单元文件”,用来取代旧初始化系统中的脚本文件,但是他们可能会同时存在系统中。

如果同时存在的话,在目录 /etc/init.d/ 下的脚本文件的优先级会高于目录 /etc/systemd/system/ 下的 service 文件。



五、关于命令 service

service xxxx start|stop|restart 相当于是对 /etc/init.d/ 下的 xxxx 的封装,相当于是一个管理命令,实际执行的是 /etc/init.d/下的可执行程序。如果 /etc/init.d/下没有该服务的可执行程序,则会查找对应的 service 文件



六、关于文件 /etc/inittab

这是 init 程序的配置文件,系统的运行级别就是在 /etc/inittab 文件里指定,所谓“运行级”就是操作系统当前正在运行的功能级别。这个级别从1 到6 ,具有不同的功能。



七、关于目录 /etc/init/

/etc/init/ 包含的是 Upstart(SysV init的替代版本)的配置文件,和 /etc/init.d/ 的作用几乎差不多。这样似乎 /etc/init/ 可以看作 /etc/init.d/ 的演化版本。

(68条消息) Linux 目录之 /etc/init.d/ 介绍_liaowenxiong的博客-CSDN博客_/etc/init.d

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值