当前位置: > Ubuntu >

Ubuntu管理开机启动项(服务)

时间:2016-05-08 23:06来源:linux.it.net.cn 作者:IT

本文只介绍一种方法,就是用sysv-rc-conf管理Ubuntu的开机启动项,比如不让apache开机自动启动等等。

  sysv-rc-conf是一个强大的服务管理程序。
  背景知识
 
  1、Ubuntu运行级别
 
  Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行级之间进行切换,以完成不同的工作。
 
  Ubuntu 的系统运行级别:
 
  0        系统停机状态
 
  1        单用户或系统维护状态
 
  2~5 多用户状态
 
  6        重新启动 
 
  查看当前运行级别,执行命令:
 
  runlevel
 
  ( runlevel 显示上次的运行级别和当前的运行级别,“N”表示没有上次的运行级别。)
 
  切换运行级别,执行命令: 
 
  int [0123456Ss]
 
  ( 即在 init 命令后跟一个参数,此参数是要切换到的运行级的运行级代号,如:用 init 0 命令关机;用 init 6 命令重新启动。)
 
  Linux 系统主要启动步骤:
 
     1. 读取 MBR 的信息,启动 Boot Manager
 
               Windows 使用 NTLDR 作为 Boot Manager,如果您的系统中安装多个
 
               版本的 Windows,您就需要在 NTLDR 中选择您要进入的系统。
 
               Linux 通常使用功能强大,配置灵活的 GRUB 作为 Boot Manager。
 
     2. 加载系统内核,启动 init 进程
 
               init 进程是 Linux 的根进程,所有的系统进程都是它的子进程。
 
     3. init 进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别,
 
        按顺序运行该运行级别对应文件夹下的脚本。脚本通常以 start 参数启
 
        动,并指向一个系统中的程序。
 
               通常情况下, /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是
 
               /etc/rcN.d/ 目录。例如您设定的运行级别为 3,那么它对应的启动
 
               目录为 /etc/rc3.d/ 。
 
     4. 根据 /etc/rcS.d/ 文件夹中对应的脚本启动 Xwindow 服务器 xorg
 
               Xwindow 为 Linux 下的图形用户界面系统。
 
     5. 启动登录管理器,等待用户登录
 
               Ubuntu 系统默认使用 GDM 作为登录管理器,您在登录管理器界面中
 
               输入用户名和密码后,便可以登录系统。(您可以在 /etc/rc3.d/
 
               文件夹中找到一个名为 S13gdm 的链接)

安装sysv-rc-conf

 
  
 
  1. <span style="font-size:18px;">sudo apt-get install sysv-rc-conf</span>  


 

使用sysv-rc-conf

 

  

 
  操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择,“X”表示开启该服务。用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。
        

 

 

 

安装 rcconf

 
  1. sudo apt-get install rcconf  
 

使用 rcconf


 
  1. sudo rcconf  
 

运行界面跟红帽子的 ntsysv 差不多。

 

 

使用中可能会遇到以下情况:

1,界面显示乱码,如果是远程用putty登陆,请把语言编码设置成 UTF-8

2,设置某项服务 启动/停用 选择ok退出,但再次进入界面,发现选项依旧。
       解决:使用 sudo rcconf 执行

3,即使使用 sudo rcconf 执行,进入界面发现配置已经更改,但程序开机依旧启动/停止。
        解决:修改 /var/lib/rcconf/services 文件的权限,赐予 755 或者 777 并再次使用 sudo rcconf 执行配置。


使用 update-rc.d

update-rc.d 是Ubuntu下面自带的服务命令
 

 
  1. update-rc.d [-n] [-f] name remove   
  2. update-rc.d [-n] name defaults [NN | SS KK]  
  3. update-rc.d  [-n] name start|stop NN runlevel [runlevel]...  .  start|stop NN runlevel [runlevel]...  
  4.               . ...  
  5. update-rc.d [-n] name disable|enable [ S|2|3|4|5 ]  
Insert links using the defaults:
          update-rc.d foobar defaults
The equivalent dependency header would have start and stop
dependencies on $remote_fs and $syslog, and start in
runlevels 2-5 and stop in runlevels 0, 1 and 6.
Equivalent command using explicit argument sets:
          update-rc.d foobar start 20 2 3 4 5 . stop 20 0 1 6 .
More typical command using explicit argument sets:
          update-rc.d foobar start 30 2 3 4 5 . stop 70 0 1 6 .
Insert links at default runlevels when B requires A
          update-rc.d script_for_A defaults 80 20
          update-rc.d script_for_B defaults 90 10
Insert a link to a service that (presumably) will not be needed by any other daemon
          update-rc.d top_level_app defaults 98 02
Insert links for a script that requires services that start/stop at sequence number 20
          update-rc.d script_depends_on_svc20 defaults 21 19
Remove all links for a script (assuming foobar has been deleted already):
          update-rc.d foobar remove
Example of disabling a service:
          update-rc.d -f foobar remove
          update-rc.d foobar stop 20 2 3 4 5 .
Example of a command for installing a system initialization-and-shutdown script:
          update-rc.d foobar start 45 S . stop 31 0 6 .
Example of a command for disabling a system initialization-and-shutdown script:
          update-rc.d -f foobar remove
          update-rc.d foobar stop 45 S .
 
若需要開機時自動執行該服務,則必須製作相關的 link(連結檔) 放在 /etc/rc*.d 中。


若你去 /etc/rc*.d 這些目錄底下看,會看到很多檔案,它的檔名是有含意的


K 開頭是 kill ,


S 開頭是 start ,


數字順序代表啟動的順序,


除了手動放置連結之外,利用 update-rc.d 也可很方便的幫我們完成這件事。


update-rc.d 指令會自動幫各個rc*.d目錄下建立link至/etc/init.d/下所指定的執行檔


例如: ln -s /home/user/backup/iptables.sh /etc/init.d/iptables.sh


上面這行指令的意思即是:我有一個 iptables.sh 檔放在 /home/user/backup 這個資料夾內,建立一連結檔放在 /etc/init.d/ 這資料夾內並命名為 iptables.sh


然後再下這行指令


update-rc.d -f iptables.sh defaults


則它就會自動的把iptables.sh放到各個 rc*.d 的目錄裡去,並設定好啟動順序


 


另一個update-rc.d使用範例介紹:


想要一開機就啟用在 init.d 中的某個 script 的符號連結的話,可執行下面的指令:(設定 vsftpd 一開機就執行)


update-rc.d -f vsftpd defaults


想要在 runlevel 1,2,3 時以 20 的 sequencing priority number (normal) 來執行 /etc/init.d/lampp ,而在 runlevel 4,5 停止的話,可執行下面指令: (範例中的句點不可省略喔)


update-rc.d vsftpd start 20 1 2 3 . stop 20 4 5 .


想要移除在 init.d 中的某個 script 的符號連結的話,可執行下面的指令: (移去 vsftpd 一開機就執行的狀態)


update-rc.d -f vsftpd remove


最後可以 rcconf 來觀看 update-rc.d 設定後的結果,若沒有安裝可執行下列指令安裝


sudo apt-get install rcconf
 
 
 
 

Ubuntu自动启动程序

 
 
直接改 /etc/rc0.d ~ /etc/rc6.d 和 /etc/rcS.d 下的东西,S开头的表示启动,K开头的表示不启动,

例如:想关闭 Red5 的开机自动启动,只需 #sudo mv /etc/rc2.d/S20red5 /etc/rc2.d/K20red5 就可以了。

首 先,linux随机启动的服务程序都在/etc/init.d这个文件夹里,里面的文件全部都是脚本文件(脚本程序简单的说就是把要运行的程序写 到一个 文件里让系统能够按顺序执行,类似windows下的autorun.dat文件),另外在/etc这个文件夹里还有诸如名为rc1.d, rc2.d一直到rc6.d的文件夹,这些都是linux不同的runlevel,我们一般进入的X windows多用户的运行级别是第5级,也就是rc5.d,在这个文件夹下的脚本文件就是运行第5级时要随机启动的服务程序。需要注意的是,在每个rc (1-6).d文件夹下的文件其实都是/etc/init.d文件夹下的文件的一个软连接(类似windows中的快捷方式),也就是说,在 /etc/init.d文件夹下是全部的服务程序,而每个rc(1-6).d只链接它自己启动需要的相应的服务程序!

要 启动scim (某一程序),我们首先要知道scim程序在哪里,用locate命令可以找到,scim在/usr/bin/scim这里,其中usr表 示是 属于用户的,bin在linux里表示可以执行的程序。这样,我就可以编写一个脚本程序,把它放到/etc/init.d里,然后在rc5.d里做一个相 应的软链接就可以了。


这个脚本其实很简单,就两行:

#!/bin/bash
/usr/bin/scim
第一行是声明用什么终端运行这个脚本,第二行就是要运行的命令。
还 需要注意的一点是,在rc5.d里,每个链接的名字都是以S或者K开头的,S开头的表示是系统启动是要随机启动的,K开头的是不随机启动的。这 样,你就可以知道,如果我要哪个服务随机启动,就把它名字第一个字母K改成S就可以了,当然,把S改成K后,这个服务就不能随机启动了。因此,我这个链接 还要起名为SXXX,这样系统才能让它随机启动。
在RH下,rc.local是默认启动的最后一个脚本文件,所以,
如果你想要随机启动,还有一种方法就是在rc.local的尾部加入/usr/bin/scim,这样就可以了。


Linux 自动启动程序

1.开机启动时自动运行程序

Linux 加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文件(该文件通常是系统最后启动的脚本),在文件最末加上一行“xinit”或“startx”,可以在开机启动后直接进入X-Window。


2.登录时自动运行程序

用 户登录时,bash首先自动执行系统管理员建立的全局登录script :/ect/profile。然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、 /.profile,但只执行最先找到的一个。
因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。


3.退出登录时自动运行程序

退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。例如,在/.bash_logout中加入命令“tar -cvzf c.source.tgz *.c”,则在每次退出登录时自动执行 “tar” 命令备份 *.c 文件。


4.定期自动运行程序

Linux有一个称为crond的守护程序,主要功能是周期性地检查 /var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab 命令来建立、修改、删除这些命令文件。
例如,建立文件crondFile,内容为“00 9 23 Jan * HappyBirthday”,运行“crontab cronFile”命令后,每当元月23日上午9:00系统自动执行“HappyBirthday”的程序(“*”表示不管当天是星期几)。


5.定时自动运行程序一次

定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命令:

$ at 12:00
at>mailto Roger -s ″Have a lunch″ < plan.txt
at>Ctr-D
Job 1 at 2000-11-09 12:00
2000-11-09 12:00时候自动发一标题为“Have a lunch”,内容为plan.txt文件内容的邮件给Roger。?9 12:00
2000-11-09 12:00时候自动发一标题为“Have a lunch”,内容为plan.txt文件内容的邮件给Roger。er。ger。er。


 

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容