深入理解/etc/init.d目录与/etc/rc.local脚本

发布时间:2020-11-15编辑:脚本学堂
有关linux下/etc/init.d目录与/etc/rc.local脚本的相关知识,init.d目录包含许多系统各种服务的启动和停止脚本,rc.local中的脚本在系统初始化级别脚本运行之后执行,一起来了解下。

深入理解/etc/init.d目录与/etc/rc.local脚本

一、关于/etc/init.d (linux下/etc/rc.local与/etc/init.d用法教程linux下/etc/init.d目录与/etc/rc.local启动脚本linux中/etc/rc.local与/etc/init.d详解
 
init.d目录包含许多系统各种服务的启动和停止脚本。它控制着所有从acpid到x11-common的各种事务。当然,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权限或sudo权限。每个脚本都将被作为一个命令运行,该命令的结构大致如下:
/etc/init.d/command 选项
comand命令选项:
start
stop
reload
restart
force-reload

经常会用到start,stop,restart选项。

例如,关闭网络:
 

/etc/init.d/networking stop

例如,改变了网络设置,并且需要重启网络,命令:
 

/etc/init.d/networking restart

init.d目录下常用初始化脚本:    
networking
samba
apache2
ftpd
sshd
dovecot
mysql

二、关于/etc/rc.local (linux下rc.local自启动服务添加过程linux中rc.local自启动详解
rc.local中的脚本是在系统初始化级别脚本运行之后再执行的,可以添加在系统启动之后执行的脚本。

比如在其中添加nfs挂载/mount脚本,也可以添加一些调试用的脚本命令。

例如,samba服务总是无法正常运行,而检查发现,samba是在系统启动过程中就该启动执行的,即samba守护程序配置保证了这种功能本应该正确执行。

只需要简单的在/etc/rc.local脚本里加上这么一行:
/etc/init.d/samba start
解决了samba服务异常的问题。