原文:http://blog.csdn.net/dante_k7/article/details/7213151

在ubuntu10.04之前的版本都是使用chkconfig来进行管理,而在之后的版本就没有了,如果想继续使用chkconfig命令,只好自己apt-get install下了。

[plain] view plaincopy

 
  1. sudo apt-get install chkconfig

在这里我给大家介绍另两个命令来配置ubuntu的启动服务,sysv-rc-conf和update-rc.d

背景知识

1、运行级别:

Linux系统任何时候都运行在一个指定的运行级上,并且不同的运行级程序和服务都不同,所要完成的工作和要达到的目的也不同,系统可以在这些运行级之间进行切换,来完成不同的工作。

运行级别等级:

  • 0        系统停机状态
  • 1        单用户模式,只准许root用户对系统进系维护
  • 2~5  多用户模式(其中3为字符界面、5为图形界面)
  • 6         重启启动

在这里需要注意的是,在Debian下(ubuntu其中之一)level2~5是没有任何区别的。

使用以下命令,可以查看当前的运行级别:

[plain] view
plain
copy

 
  1. runlevel

runlevel显示上次的运行级别和当前的运行级别,“N”表示没有上次的运行级别。

使用以下命令,可以切换运行级别:

[plain] view
plain
copy

 
  1. init [123456]

例如,init 0表示关机,init 6表示重启。

2、启动步骤:

  • 读取MBR信息,启动Boot Manager,Linux通常使用GRUB作为Boot Manager。
  • 加载系统内核,启动init进程。init进程是Linux的根进程,所有的系统进程都是它的子进程。
  • init进程读取/etc/inittab文件中的信息,并进入预设的运行级别。在这里需要说下的是,在ubuntu的6.10版本以后,就没有了/etc/inittab文件,是因为inittab已经被update软件包所取代了,具体的可以查看/usr/share/doc/update目录。就不在这里介绍了。
  • 执行/etc/rcS.d/目录下的脚本,然后是/etc/rcX.d/目录下的脚本,X代表的是数字0~6。rcS.d和rcX.d目录下的文件都是以,S或K加上两位数字组成的,其中S代表start,K代表kill,而两位数字代表启动顺序,数字越大代表级别越低。

sysv-rc-conf使用

[plain] view
plain
copy

 
  1. sudo apt-get install sysv-rc-conf

它具有操作简单,简洁的操作界面,你可以使用鼠标点击,也可以使用键盘操作,空格键代表选择,“X”表示开启服务,Ctrl+N下一页,Ctrl+P上一页,Q退出。

update-rc.d使用

update-rc.d是一个Perl脚本,是用来自动升级System V类型初始化脚本,简单来说就是哪些东西是你想要在系统引导初始化的时候运行的,哪些是希望在关机或重启时候停止的,都可以用它来帮你设置。这些脚本的连接位于/etc/rcX.d/下(X代表0~6),对应脚本位于/etc/init.d/下。

1、设置启动项:

update-rc.d <serviceName> start <order> <runlevel>

2、设置停止项:

update-rc.d <serviceName> stop <order> <runlevel>

设置启动和停止可以写在一起,例如:

[plain] view
plain
copy

 
  1. sudo update-rc.d <serviceName> start 20 1 2 3 4 5 . stop 60 0 6 .

一定要注意,写在一起的时候后面的两个“.”符号一定要有,不然报错。

3、从所有的运行级别中删除制定的启动项

update-rc.d -f <serviceName> remove

示例

根据上面的介绍,如何将一个软件安装为服务也就比较清楚了,那就是在/etc/init.d添加一个服务的启动脚本,然后在需要启动服务的对应级别中/etc/rc[0~6].d按照文件名格式添加一个指向/etc/init.d的脚本符号链接。

以apache2为例,默认情况下,apache2编译安装在/usr/local/apache2,apache2的服务器启动脚本是/usr/local/apache2/bin/apachectl,那么安装服务就是要把此apachectl拷贝到需要启动apache2服务器的运行级别对应的/etc/rc[0~6].d目录下,一半来说ubuntu的运行级别为2,所以也就是拷贝到/etc/rc2.d下。

[plain] view
plain
copy

 
  1. sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache2

如果手动添加的话:

[plain] view
plain
copy

 
  1. sudo ln -s /etc/init.d/apache2 /etc/rc2.d/S80apache2

重启服务器后,就可以看到apache2自动启动了。

这时如果想要停止或重启apache2也可以使用以下命令:

[plain] view
plain
copy

 
  1. service apache2 stop
  2. service apache2 restart

使用update-rc.d来添加:

[plain] view
plain
copy

 
  1. sudo update-rc.d apache2 start 80 2 3 4 5 .
  2. sudo update-rc.d apache2 stop 80 0 1 6 .

如果不想要这个apache2启动和停止的服务话,把它remove掉:

[plain] view
plain
copy

 
  1. sudo update-rc.d -f apache2 remove

参数-f是强制删除符号链接,即使/etc/init.d/apache2仍然存在。

同样我们也可以使用defaults参数来向运行级别2、3、4、5启动服务,也就是start,并同时向运行级别0、1、6添加关闭命令,即stop。

[plain] view
plain
copy

 
  1. sudo update-rc.d apache2 defaults 80 80

第一个80代表start,第二个80代表stop。

rc.local

在/etc/rc[2~5].d目录下都会有一个S99rc.local脚本,这是一个指向/etc/init.d/rc.local的链接,可以看出,在正常的2~5级别启动的最后都会调用这个rc.local脚本。而/etc/init.d/rc.local中又会检查是否存在/etc/rc.local,并运行。因此,我们也可以在/etc/rc.local中写入代码,来随系统启动某些程序,实现类似服务的功能。

系统的启动过程

综上,我们可以看到,系统的启动调用过程如下:

内核 -> /etc/init/rc-sysint.conf -> /etc/inittab -> etc/init.d/rc -> /etc/rc[0~6].d -> /etc/init.d/rc.local ->/etc/rc.local

虽然在ubuntu后来的版本中默认已经没有了inittab文件,但我可以自行添加。

以上的启动过程,并不是代表所有,以Redhat系列的CentOS5为例:

内核 -> /etc/inittab -> /etc/ rc.sysinit (/etc/rc.d/rc.sysinit) -> /etc/rc[?].d (/etc/rc.d/rc[?].d) -> /etc/rc.local(/etc/rc.d/rc.local)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

博客作者补充:

redhat系列的设置开机启动

CentOS系统下,主要有两种方法设置自己安装的程序开机启动。
      1、把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd。

  1. #!/bin/sh
    #
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
    touch /var/lock/subsys/local
    /usr/local/apache/bin/apachectl start

2、把写好的启动脚本添加到目录/etc/rc.d/init.d/,然后使用命令chkconfig设置开机启动。
例如:我们把httpd的脚本写好后放进/etc/rc.d/init.d/目录,使用

  1. chkconfig --add httpd
        chkconfig httpd on

命令即设置好了开机启动。

ubuntu下设置开机启动服务的更多相关文章

  1. Linux的运行级别和设置开机启动服务的方式

    Linux的运行级别 什么是运行级别呢?简单点来说,运行级别就是操作系统当前正在运行的功能级别.级别是从0到6,具有不同的功能.这些级别定义在/ect/inittab文件中.这个文件是init程序寻找 ...

  2. lampp 在linux ubuntu下自动开机启动

    lampp 在linux ubuntu下自动开机启动 lampp在linux下是不会自动启动的.需要手工处理.如下: 假如,你的lampp安装在 /opt/lampp 目录下,那么可以如下处理: 1. ...

  3. [转]Ubuntu下添加开机启动脚本

    作者: 王恒 发表于 2012年 11月 5日 1.方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚本, 所以我们可以直接在/etc/rc.local中 ...

  4. Ubuntu下添加开机启动项的2种方法

    1.方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚本,所以我们可以直接在/etc/rc.local中添加启动脚本.当然要添加到语句:exit 0 前面 ...

  5. openerp 7 在ubuntu上设置开机启动

    我们要让openerp开机运行起来. 第一步,先进入系统目录: cd /etc/init.d 第二步,创建文件.命名为openerp-server sudo vi openepr-server 第三步 ...

  6. windows系统下同时启动三台Tomcat服务的配置&并设置开机启动服务

    1.tomcat 7.0.82下载地址:链接:https://pan.baidu.com/s/1i51pAgl 密码:mxol 2.解压apache-tomcat-7.0.82-windows-x64 ...

  7. ubuntu下设置开机自启动项

    可用一些小工具来管理 Ubuntu 的启动选项: 小工具 rcconf: #sudo apt-get rcconf #sudo apt-get install rcconf root 下运行: #su ...

  8. centos 7 设置开机启动服务

    2018-12-25 Centos7下添加开机自启动脚本和服务的方法 以docker 服务为例 1.centos7自带命令设置 systemctl enable docker.service 2.设置 ...

  9. CentOS linux7 设置开机启动服务

    常用命令 描述                                 旧命令  新命令 使服务自动启动          chkconfig --level 3 http on  syste ...

随机推荐

  1. Oracle索引梳理系列(四)- Oracle索引种类之位图索引

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  2. 使用签名来保证ASP.NET MVC OR WEBAPI的接口安全

    当我们开发一款App的时候,App需要跟后台服务进行通信获取或者提交数据.如果我们没有完善的安全机制则很容易被别用心的人伪造请求而篡改数据. 所以我们需要使用某种安全机制来保证请求的合法.现在最常用的 ...

  3. 在MVC控制器里面使用dynamic和ExpandoObject,实现数据转义的输出

    在很多时候,我们在数据库里面定义表字段和实际在页面中展示的内容,往往是不太匹配的,页面数据可能是多个表数据的综合体,因此除了我们在表设计的时候考虑周到外,还需要考虑数据展现的处理.如果是常规的处理,那 ...

  4. Devexpress Gantt 应用

    甘特图属于甘特系列浏览次数(也称为时间或时间轴图表).此视图显示横条沿时间轴.每个条形代表一个单独的事件的开始和结束的值, 因此,这些图是用来跟踪各种活动的时间范围内(例如计划,利用各种资源,审查该项 ...

  5. Xamarin.ios引用第三方SDK

    引言 诚然,Xamarin是个优秀的跨平台解决方案,但毕竟还是不能将Native中所有的方法都直接实现.诸如各种第三方库,也都只有java/oc原生版本的SDK,无法直接拿过来直接使用.但,不能直接拿 ...

  6. Android Studio :enable vt-x in your bios security,已经打开还是报错的解决方法

    quote: For Windows 10: First of all, install the intelhaxm-android.exe located in the folder SDK\ext ...

  7. php实现hack中的Shape特性

    用php进行静态类型编程,估计是我的一个心结. 依次有几篇文章都记录了我的一些探索: 通过指定函数/方法形参类型提高PHP代码可靠性 http://www.cnblogs.com/x3d/p/4285 ...

  8. stm32 usart 异步传输示例

    STM32F103xE的USART异步数据传输示例 USART全称Universal Synchronous/Asynchronous Receiver/Transmitter,是一种可以进行同步/异 ...

  9. 21、ASP.NET MVC入门到精通——ASP.NET MVC4优化

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 删除无用的视图引擎 默认情况下,ASP.NET MVCE同时支持WebForm和Razor引擎,而我们通常在同一个项目中只用到了一种视图引擎 ...

  10. Ionic + Cordova 跨平台移动开发环境配置

    1.下载安装JDK(根据各自系统选择32位或64位下载),安装完成之后需要做以下环境变量配置 在“系统变量”中,设置3象属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),如果已经 ...