开机自动启动apache 及相关自启动知识  

2009-05-23 13:09:26|  分类: Linux|字号 订阅

 
 

update @ 2011/10/13:

开机自启动apache服务,用admin帐号

#vi /etc/rc.d/rc.local

#su - admin -c "/usr/alibaba/httpd/bin/httpd -f  /home/admin/www/conf/httpd.conf -k start"

update @ older:

设置Linux系统启动自动启动服务的两种方法:

方法一:/etc/rc.d/rc.local 中增加需要启动的程序或服务。

  例如:apace安装在 /usr/local/www目录下,若要设置自动启动服务可用以下命令:

  vi /etc/rc.d/rc.local 加入:

  /usr/local/www/bin/apachectl start


方法二:将程序注册为系统服务

  在/etc/rc.d/init.d目录下编辑启动脚本。

  拷贝自动启动的服务程序到 /etc/rc.d/init.d 目录下:

  例如:将 appache2的驱动程序appachectl拷贝至/etc/rc.d/init.d目录下并改名为:httpd

  cp /usr/local/www/apachectl /etc/rc.d/init.d/httpd

  使用编辑器打开httpd文件,并在第一行#!/bin/sh下增加两行文字如下

  # chkconfig: 35 70 30

  # description: Apache

  更改httpd文件执行权限:

  chmod 700 /etc/rc.d/init.d/httpd

  注册该服务

  chkconfig --add httpd

  最后:service httpd start


相关知识:

Linux系统启动的第一个进程是init
# ps -ef | grep init //查看init的PID

init 运行 /etc/inittab中描述的任务。

/etc/inittab 文件的格式允许以"#"开始注释行,正常的条目用 ":" 界定。遵从如下的格式:

id:runlevel:action:process 
示例: id:5:initdefault:

解释:
id 代表用户定义的唯一的标志, 
runlevel 可以使0-6的组合或者为空, 
action 来自一个关键词keyword 描述init如何对待process, 
process 是要执行的命令。

描述action字段的各种关键字可以在inittab的手册中找到。常用的关键字, 不是全部, UNIX平台包括这些:

initdefault--定义一个系统启动后进入的运行级 
wait --会被执行一次的进程 (当进入运行级的时候)。init 进程将等待这个进程被终止。 
boot --定义一个启动的时候执行的进程. 
bootwait --与 boot 类似 ,不过 init在继续运行前等待进程的终止 
sysinit --定义一个进程在 boot的时候执行,在任何 boot或者bootwait inittab 条目的前面执行。

runlevel 字段指明系统状态。
0. 系统挂起 
1. 但用户Single-user mode 
2. 多用户,没有NFS 
3. 完整的多用户Complete multiuser mode 
4. 用户自定义 
5. X11 (XDM 登陆) 
6. 重新启动

/etc/init.d文件与chkconfig命令


  在/etc/init.d目录下,任意打开一个启动脚本,你会发现在其顶部的注释中,基本上都有以下一行:

  chkconfig 235 56 34 (也可能是其他数字组合)

  就 以chkconfig 235 56 34为例,235表示该启动脚本对应的服务将在系统启动级别2, 3, 5级启动。而56表示其启动优先级为56,所谓的优先级,就是在rc脚本中出现在各个符号链接名中的数字。

那么34是什么相信大家已经猜到了,对了,他就是终止优先级。

  Linux下利用CHKCONFIG管理系统服务

  chkconfig --list [name] 例子:chkconfig --list httpd 查看httpd的运行级别

  chkconfig --add name 例子:chkconfig --add httpd 将httpd注册为系统服务

  chkconfig --del name 例子:chkconfig --del httpd 把httpd从系统服务中删除

  chkconfig [--level levels] name <on|off|reset> 例子:chkconfig --level httpd on|off|reset 改变httpd的运行级别


# find /etc/rc.d -name '*crond' -print 
/etc/rc.d/init.d/crond 
/etc/rc.d/rc0.d/K60crond 
/etc/rc.d/rc1.d/K60crond 
/etc/rc.d/rc2.d/S40crond 
/etc/rc.d/rc3.d/S40crond 
/etc/rc.d/rc4.d/S40crond 
/etc/rc.d/rc5.d/S40crond 
/etc/rc.d/rc6.d/K60crond 
读懂上面的输出:
第1行:代表/etc/rc.d/init.d中的脚本名为crond
第3、4、5、6行:crond在进入运行级2,3, 4,5 的时候启动
第1、2、7行:当进入运行级 0, 1 , 6的时候停止

 

第二印象

2009-04-08 10:36:00

一个生产环境中的启动脚本例子
-----------------------------------------------
#!/bin/sh
#启动脚本的存放位置 /etc/rc.d/rc.local
This script will be executed *after* all the other init scripts.
You can put your own initialization stuff in here if you don't
want to do the full Sys style init stuff.

#startup Iplanet Directory Server 启动ldap
/usr/local/pkg/iplanet/servers/slapd-toppymgt/start-slapd

#startup jakarta-tomcat 启动tomcat
/usr/local/pkg/jakarta-tomcat-4.1.12/tomcat_start
/usr/local/man/ts/tss2_rc2/teamspeak2-server_startscript start

#touch /var/lock/subsys/local 启动oracle数据库
su oracle -c "/u01/app/oracle/product/9.2.0/bin/dbstart"
su oracle -c "/u01/app/oracle/product/9.2.0/bin/lsnrctl start"

#startup dinner erp 启动erp
/usr/local/pkg/mserver1/metasphere_server_by_root start