首页 > 代码库 > linux -- 启动时启动服务或者执行命令

linux -- 启动时启动服务或者执行命令

运行等级

  首先,我们需要知道Linux系统关于运行等级的知识。在不同的linux系统上(例如ubuntu和Fedora)这些数字与和所代表的意义可能不同,但主要的有以下几个:

  1.  单用户模式。
  2.  多用户模式。
  3. 网络多用户模式。
  4. 用于特殊目的的预留
  5. 添加显示管理器到等级3

  因此,对于普通的运行等级,服务使用等级3,这时不管X11是否启动,服务将自动启动。

 

服务,守护进程,服务器

  在Ubuntu中,可以使用sys-rc-conf命令简单的选择需要启动的已安装服务。

  在Fedora下,可以使用chkconfig达到同样的目的。

 

自定义脚本与应用

  当然也有其它的方法配置系统启动时需要自动运行的服务与应用程序。在/etc/rcX.d(X表示运行等级)目录下,有许多需要运行在每个等级下的命令/脚本/应用。可以把具有某种目的(维护/挂载文件系统等)的脚本链接到这个目录下,脚本就会在系统启动时执行。

  创建连接时,需要注意命名格式:Sxx或者Syy(xx和yy使用数字代替,例如K36mysqld和S64mysqld)。这些命令将根据数字的大小依次执行,字母S与K是告诉系统这是个启动或者结束命令(S->Start, K->Kill)。就是说,在选择中运行等级下,系统启时执行S开头的连接,关闭时执行K开头的链接。

例如:

$ ls /etc/rc0.d/ -ano
total 8
drwxr-xr-x.  2 0 4096 Apr  4 21:47 .
drwxr-xr-x. 10 0 4096 Mar 26 22:55 ..
lrwxrwxrwx.  1 0   22 Dec 12 08:48 K01livesys-late -> ../init.d/livesys-late
lrwxrwxrwx.  1 0   20 Dec 12 08:12 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx.  1 0   15 Apr  4 20:36 K80redis -> ../init.d/redis
lrwxrwxrwx.  1 0   17 Apr  4 21:47 K90network -> ../init.d/network
lrwxrwxrwx.  1 0   17 Dec 12 08:48 K99livesys -> ../init.d/livesys

 

 

另一种方法:

  可以在/etc/rc.local文件中加入需要执行的命令,当系统启动完成时,这些命令将被执行。

  就是说,这些命令将在运行等级3后被执行,MySql, Apache等服务后启动完后运行。尽管这是一种简单的方案,但我还是推荐使用上一种方案,因为上一方案可以完全控制执行哪此命令,以及执行的时间和位置。当然这可能需要你有对Linux系统环境很好的了解。

 

引用

  1. Start a service or execute a script on boot on Ubuntu/Fedora