Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1454902
  • 博文数量: 263
  • 博客积分: 10851
  • 博客等级: 上将
  • 技术积分: 2627
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-26 22:40
文章分类

全部博文(263)

文章存档

2013年(4)

2012年(25)

2011年(33)

2010年(50)

2009年(138)

2008年(13)

分类: LINUX

2009-06-04 12:10:51

suse10中没有rc.local, 感觉用起来不是很方便
 
suse linux 沒有這個檔案,另外策略就是也不喜歡使用者這樣管理啟動服務。
若你有某各服務服務需要是在進入 runlevel 後才執行的話,於 suse 下正規做法應該是自己寫一個 rc script 檔案放置於 /etc/init.d/ 目錄內,然後使用 chkconfig or inssev 程式來管理配置能夠於某個 runlevel 環境開機時是否要啟用關閉該服務項目。
該 rc script 檔案寫法可以自己參考一下 /etc/init.d/ 裡面現成的 script 檔案,應該很容易就寫一個自己的版本。
另外 suse 有個 /etc/init.d/boot.local 檔案是由 /etc/init.d/boot 這個 script 所啟動的,而且是最後 boot script 工作完成要準備進入 runlevel 環境執行各項 rc script 前所執行。而 rh 的 /etc/rc.d/rc.local 檔案是 runlevel 環境執行各項 rc script 時最後一個階段執行的。
所以若你要跑的程式適合於 runlevel 這項服務之前就執行的話,suse linux 可以放於 boot.local 檔案。
 
摘自:
 
 
法1:
编辑/etc/init.d/rc脚本,在最后一个exit 0之前,加入以下内容,然后创建/etc/rc.local文件,并赋予755权限。
rc_local=/etc/rc.local
current_runlevel=$(runlevel | awk '{ print $NF }')
if [ -x $rc_local ];then
   ((current_runlevel>1)) && ((current_runlevel<6)) && {
     echo -e "\n\n\n"
     echo "-----------------------Startup $rc_local---------------------------"
     $rc_local
   }
fi
 
法2:
步骤1. 创建/etc/rc.d/rclocal文件
case "$1" in
    start)
        if ! test -x /etc/init.d/rc.local ; then
            echo '/etc/rc.local is not exsit!'
            exit 1
        fi
        /etc/init.d/rc.local &
    ;;
    stop)
    ;;
esac
 
步骤2. 创建/etc/rc.d/rc.local, 把你要开机执行的脚本都加到里面
步骤3. chmod 0755 /etc/rc.d/rc.local /etc/rc.d/rclocal 
步骤3. chkconfig --add rclocal
 
 
更正: 法2. 没这么简单, 你发现rclocal在rc3.d里面是S01rclocal。 如何让rclocal在所有服务中最后启动呢, 或者指定在某个顺序启动。 在启动服务的时候, 有个先后顺序也需要指定, rc3.d里面的S00xx就表示最先启动的服务, 然后是S01xx.... 这个指定是在/etc/init.d/xx 脚本里面指定的, 具体请参照mysql的启动脚本, 有很详细的英文注释:
# MySQL daemon start/stop script.
# Usually this is put in /etc/init.d (at least on machines SYSV R4 based
# systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/K01mysql.
# When this is done the mysql server will be started when the machine is
# started and shut down when the systems goes down.
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 64 36
# description: A very fast and reliable SQL database engine.
# Comments to support LSB init script conventions
### BEGIN INIT INFO
# Provides: mysql
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start:  2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop MySQL
# Description: MySQL is a very fast and reliable SQL database engine.
### END INIT INFO
 
 
这里在网上看到的一篇文档:
 
像我一样的菜鸟们,希望你们可以不被系统服务自启动问题,难住
,请高手指正我的错误
最近一直在弄apache服务器,好辛苦啊,参看了/etc/rc.d/init.d/下其它的服务启动脚本以及和rc0~6.d目录之下的符号连接,终于有点明白chkconfig的工作原理,
apache这个问题其实很简单的(不知道的时候,好难),你只要把在安装路径下的bin目录下的apachectl文件复制到 /etc/rc.d/init.d/目录下,用文本编辑器打开他,在文件首部#!/bin/bash行下,加入以下几行
# chkconfig: 2345 50 40
# description This is  Internet www Server
说明一下,description是描述这个服务用的,一定要写上对服务的描述,而且不可以是中文的,
chkconfig: 第一组数字是系统运行级2345表示的是将要设为启动的系统运行级别, 第二个数字是优先级,00优先级最高,当然考虑到依赖性,你的服务的优先级不宜过高,如果,比自己依赖的服务的优先级更高,那么您的服务将无法正常启动,第三组数字就是杀死服务的优先级
您还可以用以下方法设置它将覆盖以上两句的设置
### BEGIN INIT INFO
# Provides: 服务名
# Required-Start: $local_fs $network (依赖的服务用空格隔开,$加上服务名,要求先启动的服务)
# Required-Stop: $local_fs $network (依赖的服务用空格隔开,$加上服务名,要求先停止的服务)
# Default-Start: 2 3 4 5 (要启动该服务的运行级别)
# Default-Stop: 0 1 6(这个不用说了吧)
# Short-Description: 简单描述一下服务(英文)
# Description: 描述一下服务(英文)(这里不覆盖在chkconfig下的description)
### END INIT INFO
保存退出,在GUI的服务配置中就可以看到该服务的条目了,右边出现该服务的描述
接着就可以chkconfig -add 服务,就可以看到你设置的那些级别可以自动启动服务了,或是chkconfig -level 级别 服务名
 
链接地址:
阅读(1579) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~