`
hanyi366
  • 浏览: 290783 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

理解Linux系统/etc/init.d目录和/etc/rc.local脚本

 
阅读更多

本文英语版本来自:http://www.ghacks.net/2009/04/04/get-to-know-linux-the-etcinitd-directory/

转自:http://blog.csdn.net/acs713/article/details/7322082

     以下内容是作者自己的翻译版本,如需转载到CSDN外其他网站,请注明本文链接。

 一、关于/etc/init.d

     如果你使用过linux系统,那么你一定听说过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

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

 二、关于/etc/rc.local

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

          /etc/init.d/samba start

     这样就成功的解决了samba服务异常的问题。

 

 三、总结

         Linux是灵活的。正因为它的灵活性,我们总是可以找到许多不同的办法来解决同一个问题。启动系统服务的例子就是一个很好的佐证。有了/etc/init.d目录下的脚本,再加上/etc/rc.local这个利器,你可以放心的确保你的服务可以完美的启动和运行。

分享到:
评论

相关推荐

    解决Linux上MongoDB启动脚本错误---env: /etc/init.d/mongodb : no such file or directory

    总之,解决"env: /etc/init.d/mongodb : no such file or directory"错误需要对Linux系统管理和MongoDB的安装配置有深入了解。根据具体情况,可能需要调整启动脚本、检查系统路径、适应Systemd环境或手动创建启动...

    ubuntu系统中/etc/rc.local和/etc/init.d/rc.local的区别详解

    另一方面,`/etc/init.d/rc.local` 是一个基于 `init` 系统的服务脚本,它位于 `init.d` 目录下,通常用于处理服务的启动、停止和重启操作。在Ubuntu 15.04之前的版本,`init` 系统是默认的启动管理器。这个脚本会在...

    linux etc/rc.d 系统启动服务详解

    在Linux操作系统中,`/etc/rc.d` 是一个非常重要的目录,它包含了系统启动时运行的各种脚本和服务配置。这个目录是基于传统的init系统的一部分,主要用于管理系统的启动、停止、重启以及服务的控制。让我们深入了解...

    rc.local自启动学习.doc

    .d 脚本位于 /etc/rc.d/init.d 目录下,命名格式为 S{number}{name} 或 K{number}{name},其中 S 开头的文件向脚本传递 start 参数,K 开头的文件向脚本传递 stop 参数,number 决定执行的顺序。 二、rc.d 机制 rc...

    linux自启动设置.txt

    ### Linux自启动设置详解 #### 1. 关于Linux的启动 在Linux系统中,启动过程是由`init`....d`、`/etc/rc.d/init.d`、`/etc/rc.d/rc.local`以及各种bash启动脚本之间的关系,我们可以更好地管理Linux系统的启动过程。

    linux自启动设置方法

    - **脚本存放**: 所有的启动脚本均存储在 `/etc/rc.d/init.d` 目录中。 - **符号链接**: 在 `/etc/rc.d/rc?.d` 目录中存放着指向 `/etc/rc.d/init.d` 下相应脚本的符号链接。 - **命名规则**: 符号链接的命名方式为 ...

    Linux系统启动引导程序配置文件解析

    在System V init系统中,启动脚本位于`/etc/init.d`或`/etc/rc.d/init.d`目录,它们按特定顺序执行,而链接文件位于`/etc/init.d/rc?.d`、`/etc/rc.d/rc?.d`或`/etc/rc?.d`目录下,其中`?`代表运行级别。对于本地...

    Linux下配置JBoss

    一旦环境变量设置完毕,你可以通过复制JBoss的启动脚本到`/etc/init.d`目录,使JBoss能够作为系统服务启动和停止。执行以下命令: ```bash # cp $JBOSS_HOME/bin/jboss_init_redhat.sh /etc/init.d/ ``` 然后,...

    linux下php安装配置教程借鉴.pdf

    ln -s /etc/rc.d/init.d/apached /etc/rc3.d/S90apache ln -s /etc/rc.d/init.d/apached /etc/rc0.d/K20apache ``` 至此,你已经在Linux上成功地搭建了Apache+PHP+MySQL的基础环境。请注意,这个过程可能需要根据你...

    linux文件系统怎样初始化步骤.docx

    例如,`/etc/inittab`中的`si::sysinit:/etc/rc.d/init.d/rc sysinit` 行表示在系统初始化时运行`/etc/rc.d/init.d/rc`脚本,并传递`sysinit`参数。`rc`脚本会根据传入的参数来决定执行哪个`rcX.d`目录下的服务脚本...

    在linux下设置脚本自动运行的方法.

    例如,假设你想要自动启动Apache服务器,可以创建一个名为`apached`的脚本文件,并将其放置在`/etc/rc.d/init.d`目录下。脚本内容大致如下: ```bash #!/bin/bash RESTART="/usr/local/apache2/bin/apachectl ...

    如何让Linux系统的程序在开机时自动运行

    在Linux系统中,所有启动脚本都存放在/etc/rc.d/init.d目录下,rc?.d目录中存放的是init.d目录中的脚本链接,命名格式为S{number}{name}或K{number}{name},其中S开头的文件向脚本传递start参数,K开头的文件向脚本...

    linux下设置开机自动启动程序.doc

    包括在 /etc/rc.d/rc.local 中增加启动命令、将 apache 注册为系统服务、在 Red Hat Linux 中自动运行程序、登录时自动运行程序、退出登录时自动运行程序、定期自动运行程序和定时自动运行程序等多种方法。...

    SUSE Linux下开机自动运行脚本命令的方法

    对于大多数需要开机自动执行的程序或脚本而言,推荐将其添加到`/etc/rc.d/after.local`中,因为这时系统环境已经基本准备就绪,可以避免因设备未准备好而导致的问题。 #### 修改MAC地址示例 假设我们需要在系统...

    linux下配置php环境完整版.doc

    cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld chmod 700 /etc/rc.d/init.d/mysqld ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S97mysqld /etc/rc.d/init.d/mysqld start mysqladmin -u root ...

    debian安装java环境文档

    首先,我们需要下载 JDK 的安装包,例如 jdk-1_5_0_10-linux-i586.bin,然后将其放到 /usr/local/ 目录下,以 root 用户身份执行安装命令 ./jdk-1_5_0_10-linux-i586.bin。安装完成后,我们需要配置环境变量,编辑 /...

    linux设置tomcat开机自动启动1

    `/etc/rc.d/rc.local`是Linux系统中一个传统的脚本,用于在系统启动时执行自定义命令。你可以使用`vi`或其它文本编辑器来编辑这个文件。在文件的末尾添加以下两行: ``` export JAVA_HOME=/usr/local/jdk1.7.0_03...

    Linux 开机(服务、脚本)启动顺序.docx

    在 /etc/rc3.d 目录下,有许多软链接,指向 /etc/init.d/ 中的脚本文件。这些脚本文件的命名规范为 [K|S][number][service name],其中: * K 表示系统关闭时要关闭的脚本 * S 表示系统启动时需要启动的脚本 * ...

    在linux下设置开机自动启动程序的方法.pdf

    4. 执行 /etc/rc.d/rc.local 脚本 5. 等待用户登录 在 /etc/rc.d/rc.local 文件中,可以添加需要执行的命令,以便在开机启动后自动执行。 本文介绍了在 Linux 下设置开机自动启动程序的方法,包括开机启动时自动...

Global site tag (gtag.js) - Google Analytics