本文所使用的环境为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即可,或则直接删除该配置文件.
所以,如果你有一个开机自启的程序,当你使用前面的方法删除以后,程序还是自启,那么问题肯定出在这一步.