本文所使用的环境为ubuntu14.04,ubuntu15.04使用systemd,可能会有很大的不同

方法一

使用类图形的sysv-rc-conf命令,你需要首先安装sysv-rc-conf

[yaxin@~]$sudo apt-get install sysv-rc-conf
[yaxin@~]$sudo sysv-rc-conf

运行之后会有一个类图形的界面, 这个操作起来相当简单, 也容易懂,这里就不多介绍

方法二

首先使用runlevel命令获取系统运行在哪个level下(ubuntu server一般是2),如下:

[yaxin@~]$runlevel
N 2
[yaxin@~]$

然后将启动脚本放到/etc/rcX.d 其中X为运行级别,如/etc/rc2.d, 注意脚本要以大写S开头, 后面接一个两位数的数字,表示启动顺序,数字越小表示越先启动

一般/etc/rc2.d中会有很多软链接到/etc/init.d下的启动脚本, 这样的好处是集中管理,很方便, 并且可以使用service这个程序对进程进行重启等操作.

如,编译安装完php后,将sapi/fpm文件夹下的init.d.php-fpm文件复制到/etc/init.d文件夹下,然后在/etc/rc2.d下创建一个软链接

[yaxin@php-5.6.8]$sudo cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[yaxin@php-5.6.8]$sudo chmod +x /etc/init.d/php-fpm
[yaxin@php-5.6.8]$sudo ln -s /etc/init.d/php-fpm /etc/rc2.d/S20php-fpm
[yaxin@php-5.6.8]$service php-fpm start

当然,如果你想关闭一个自启的程序,直接将对应的/etc/rcX.d下的启动脚本删除即可

[yaxin@~]$sudo rm /etc/rc2.d/S20php-fpm

或则

[yaxin@~]$sudo unlink /etc/rc2.d/S20php-fpm

注意: sysv-rc-conf命令就是使用这个方法来实现程序自启和禁止自启的.

方法三

直接将需要启动的程序添加到/etc/rc.local文件中

如你需要开机启动nginx,那么可以这样

[root@~]$echo "/etc/nginx/sbin/nginx" >> /etc/rc.local

其实这个就是方法二的快捷操作,如果你查看/etc/rc2.d文件夹下面的文件会发现有一个S99rc.local的软链接,它链接到/etc/init.d/rc.local, 而/etc/init.d/rc.local这个脚本中又会执行/etc/rc.local这个脚本

方法四

其实前几种方式并不是正统的自启管理方式, 使用rcX.d传统init的方式, 而ubuntu14.04是使用Upstart来初始化守护进程, 但为了照顾使用从init过来(如centos6等)的人才创建的. 而真正的启动脚本(应该说配置)是放在/etc/init这个文件夹下的

/etc/init文件夹下有很多的以**.conf**结尾的文件,这些就是正统的管理自启程序的配置文件.

随便打开一个文件, 有一行start on runlevel [234], 这就说明在runlevel为234的情况下启动

[yaxin@/etc/init]$head ssh.conf
# ssh - OpenBSD Secure Shell server
#
# The OpenSSH server provides secure shell access to the system.

description "OpenSSH server"

start on runlevel [2345]
stop on runlevel [!2345]

如上,ssh将在runlevel为2 3 4 5的时候开机启动, 而启动的具体命令在配置文件后面.

当然,如果你想关闭自启,那么删除但钱runlevel即可,或则直接删除该配置文件.

所以,如果你有一个开机自启的程序,当你使用前面的方法删除以后,程序还是自启,那么问题肯定出在这一步.