理解Linux系统:/etc/init.d/目录

/etc/init.d

  如果你使用过linux系统,那么你一定听过init.d目录。但是这个目录究竟是做什么用的?他基本上只做一件事,但是这件事是为你的整个系统服务的,所以init.d目录非常重要。这个目录里面包含了一系列系统里面服务的开启和停止的脚本。从acpid到x11-common的各项事务都受它控制。所以init.d没有想象的那么简单。
  当你查看/etc目录时,你会发现许多rc#.d形式的目录。(#代表数字0-6,指相对的初始化水平)这些目录中包含许多进程的控制脚本。这些脚本以’K’或者’S’开头。所有以’K’开头的脚本先于以’S’开头的脚本运行。这些脚本所在位置将决定这些脚本启动的时间。这些系统系统服务像一个高效率的机器一样在这些目录间共同工作。有时候你想在不使用kill或者killall进程的情况下,干净的启动或者停止一个脚本的时候,、inin.d这个目录就派上用场了。
  如果你是用的是Fedore系统,你将可以找到/etc/rc.d/init.d目录。无论init.d在什么位置,它都将发挥同样的作用。
  为了能够使用init.d目录下的脚本,你需要有root或者sudo权限。所有的这些命令将被当做一个命令运行,这些命令的结构大致如下:
  /etc/init.d/command OPTION
  command指的是你实际运行的命令。OPTION可以是下面几种:

  • start
  • stop
  • reload
  • resart
  • force-reload

大多数情况下你使用的是start,stop,restart。例如:你想关掉你的网路连接,你可以使用如下的命令:
/etc/init.d/networking restart
或者当你修改了你的网络配置,需要重启网络的时候。你可以使用下面的命令:
/etc/init.d/networking restart

这个目录下常用的脚本有:
- samba
- apache2
- ftpd
- sshd
- dovecot
- mysql
- networking
当然你的目录下可能含有其他的一些常用脚本。这个取决于你安装了什么服务。


/etc/rc.local

  /etc/rc.local是我经常是用的另一个脚本。这个脚本在系统初始化脚本之后运行,所以你可以放心的将你想在系统启动后执行的脚本放在里面。通常我会将nfs的挂载脚本放在里面。同时也是一个放调试脚本的好地方。比如,有一次我的系统中得samba服务无法正常启动,尽管检查确认本该随着系统一起启动的。通常我也会话大量的时间去寻找原因,仅仅是在rc.local文件里下写下这么一行
  /etc/init.d/samba start
  samba无法启动的问题就解决了


总结

  Linux系统是灵活的,正因为这种灵活性,同一个问题总可以找到多种解决方案。启动系统服务就是个很好的例子。 在/etc/init.d和/etc/rc.local的帮助下,你可以确保你的系统服务可以启动和运行。

原文地址http://www.ghacks.net/2009/04/04/get-to-know-linux-the-etcinitd-directory/

你可能感兴趣的:(linux)