linux服务自启动

如何在系统启动时自动加载脚本或服务?通常可使用以下几种方法,(适用于redhat,centos为例)

 
  ln -s             在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0~6七个运行级别之一)  
  chkonfig          命令行运行级别设置  
  ntsysv            伪图形运行级别设置 一、 
  ln -s 建立启动软连接 
  

   在Linux中有7种运行级别(可在/etc/inittab文件设置),每种运行级别分别对应着/etc/rc.d/rc[0~6].d这7个目录

    #vi /etc/inittab

   # Default runlevel. The runlevels used are:
   #   0 - halt (Do NOT set initdefault to this)  关机
   #   1 - Single user mode  单用户模式的服务,root可使用 其他不能使用
   #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)  多用户,不能使用net file system,nfs,smb,open相关服务没有开启
   #   3 - Full multiuser mode 完全多用户模式
   #   4 - unused 安全模式
   #   5 - X11 完整的图形模式
   #   6 - reboot (Do NOT set initdefault to this) 重启
   #
   id:5:initdefault: 默认使用的模式

查看启动项对应点目录

  #ls -l /etc/rc.d/

  drwxr-xr-x. 2 root root  4096 Jun 21 17:42 init.d
-rwxr-xr-x. 1 root root  2617 Sep 17  2012 rc
drwxr-xr-x. 2 root root  4096 Jun 21 17:42 rc0.d
drwxr-xr-x. 2 root root  4096 Jun 21 17:42 rc1.d
drwxr-xr-x. 2 root root  4096 Jun 21 17:42 rc2.d
drwxr-xr-x. 2 root root  4096 Jun 21 17:42 rc3.d
drwxr-xr-x. 2 root root  4096 Jun 21 17:42 rc4.d
drwxr-xr-x. 2 root root  4096 Aug 22 09:27 rc5.d
 drwxr-xr-x. 2 root root  4096 Jun 21 17:42 rc6.d
-rwxr-xr-x. 1 root root   220 Sep 17  2012 rc.local
-rwxr-xr-x. 1 root root 19370 Sep 17  2012 rc.sysinit


这7个目录中,每个目录分别存放着对应运行级别加载时需要关闭或启动的服务,由详细信息可以知道,其实每个脚本文件都对应着/etc/init.d/目录下具体的服务。

K开头的脚本文件代表运行级别加载时需要关闭的,S开头的代表需要执行,K、S后面点数字代表执行顺序,从小到大依次执行

#ls -l /etc/rc.d/rc3.d/

  rwxrwxrwx. 1 root root 14 Mar  6  2013 K88sssd -> ../init.d/sssd
lrwxrwxrwx. 1 root root 15 Jul  6  2012 K89rdisc -> ../init.d/rdisc
lrwxrwxrwx. 1 root root 17 Mar  6  2013 K90network -> ../init.d/network
lrwxrwxrwx. 1 root root 19 Mar  6  2013 K95firstboot -> ../init.d/firstboot
lrwxrwxrwx. 1 root root 14 Jul  6  2012 K99rngd -> ../init.d/rngd
lrwxrwxrwx. 1 root root 17 Jul  6  2012 S00livesys -> ../init.d/livesys
lrwxrwxrwx. 1 root root 22 Mar  6  2013 S02lvm2-monitor -> ../init.d/lvm2-monitor
lrwxrwxrwx. 1 root root 16 Jul  6  2012 S07iscsid -> ../init.d/iscsid
lrwxrwxrwx. 1 root root 19 Jul  6  2012 S08ip6tables -> ../init.d/ip6tables
lrwxrwxrwx. 1 root root 18 Jul  6  2012 S08iptables -> ../init.d/iptables


因此,当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软链接即可:

#ln -s /etc/init.d/httpd /etc/rc.d/rc5.d/S100httpd

二、 chkconfig (适用系统已存在服务)

如系统已安装apache mysql,可查看服务状态

#chkconfig --list sshd

sshd               0:off    1:off    2:off    3:off    4:off    5:off    6:off

在 2345都处于关闭状态,开启可使用

# chkconfig sshd on

#chkconfig --list sshd

sshd               0:off    1:off    2:on    3:on    4:on    5:on    6:off

已开启,

关闭服务可使用 #chkconfig sshd off

有选择性开启可加参数 -level 如

# chkconfig --level 235 sshd on



三、 ntsysv 伪图形

原理和chkconf一样,只是使用点图形界面

可使用#sudo setup 进入选择System services

或直接#ntsysv 进入设置

默认情况下,当前运行级别为多少,在ntsysv中设置的启动服务的级别便是多少,比如,我当前的运行级别是5,那么我在伪图形界面中选择启动服务后,它的运行级别也会是5



另外也可手动启动,默认存在两种方式

# /etc/init.d/httpd start

# service httpd start

你可能感兴趣的:(linux)