设为首页 收藏本站
查看: 894|回复: 0

[经验分享] ubuntu配置开机启动服务

[复制链接]

尚未签到

发表于 2018-5-1 10:00:42 | 显示全部楼层 |阅读模式
  在ubuntu10.04之前的版本都是使用chkconfig来进行管理,而在之后的版本就没有了,如果想继续使用chkconfig命令,只好自己apt-get install下了。
  [plain] view plaincopy

  •   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 plaincopy

  •   runlevel
  runlevel显示上次的运行级别和当前的运行级别,“N”表示没有上次的运行级别。
  使用以下命令,可以切换运行级别:
  [plain] view plaincopy

  •   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 plaincopy

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

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 plaincopy

  •   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 plaincopy

  •   sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache2
  如果手动添加的话:
  [plain] view plaincopy

  •   sudo ln -s /etc/init.d/apache2 /etc/rc2.d/S80apache2
  重启服务器后,就可以看到apache2自动启动了。
  这时如果想要停止或重启apache2也可以使用以下命令:
  [plain] view plaincopy

  •   service apache2 stop
  •   service apache2 restart
  使用update-rc.d来添加:
  [plain] view plaincopy

  •   sudo update-rc.d apache2 start 80 2 3 4 5 .
  •   sudo update-rc.d apache2 stop 80 0 1 6 .
  如果不想要这个apache2启动和停止的服务话,把它remove掉:
  [plain] view plaincopy

  •   sudo update-rc.d -f apache2 remove
  参数-f是强制删除符号链接,即使/etc/init.d/apache2仍然存在。
  同样我们也可以使用defaults参数来向运行级别2、3、4、5启动服务,也就是start,并同时向运行级别0、1、6添加关闭命令,即stop。
  [plain] view plaincopy

  •   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)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-454307-1-1.html 上篇帖子: Ubuntu下Apache重启错误:Could not reliably determine解决 下篇帖子: 写一下ubuntu下的vsftpd吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表