- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
一、关于目录 /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@localhost ~]# ll /etc/init.d lrwxrwxrwx. 1 root root 11 5月 11 2019 /etc/init.d -> rc.d/init.d
or
[root@localhost ~]# ls -ld /etc/init.d lrwxrwxrwx. 1 root root 11 5月 11 2019 /etc/init.d -> rc.d/init.d
[root@localhost ~]# 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/ 的演化版本。
售前咨询
售后咨询
备案咨询
二维码
TOP