LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2602|回复: 5

怎样让系统在启动的时候以服务的形式加载我的应用(同图形界面无关)

[复制链接]
发表于 2002-12-20 12:48:51 | 显示全部楼层 |阅读模式
让程序以服务的形式加载,主要是在/etc/init.d下面新建一个脚本,以及chkconfig的使用。我现在举一个实例:我机器在/mnt/soft目录下面有redhat的三张光盘,我想在每次系统启动时候自动加载到/mnt
目录下面的iso1,iso2,iso3目录里面,并且在系统每次启动的时候自动的硬盘使用DMA模式,下面是程序:

#!/bin/sh
#
# Startup script for myservice
# description: This is myservice
# chkconfig: 35 100 15

#Source function library
. /etc/rc.d/init.d/functions

#The following file serves as a mask to check whether the redhatcd has been started
SYSCONF_FILE=/var/lock/subsys/redhatcd

#See how we were called
start()
{
  mount /mnt/soft/PSYCHE-I386-DISC1.ISO /mnt/iso1 -o loop
  mount /mnt/soft/PSYCHE-I386-DISC2.ISO /mnt/iso2 -o loop
  mount /mnt/soft/PSYCHE-I386-DISC3.ISO /mnt/iso3 -o loop
  /sbin/hdparm -d1 /dev/hda >/dev/null
  touch $SYSCONF_FILE
}
stop()
{
  umount /mnt/iso1
  umount /mnt/iso2
  umount /mnt/iso3

  /sbin/hdparm -d0 /dev/hda>/dev/null
  rm -f $SYSCONF_FILE
}
case "$1" in
  start)
  if [ -f $SYSCONF_FILE ]
  then
          echo "MyService is already on!"
  else
  start
  echo -n "Starting MyService:"
  echo_success
  echo
  
  fi
  ;;
  stop)
  if [ -f $SYSCONF_FILE ]
  then
  echo -n "Stoping MyService :"
  echo_success
  echo
  stop
  else
        echo "MyService is not on!"
  fi
  ;;
  restart)
  $0 stop
  $0 start
  ;;
  status)
  if [ -f $SYSCONF_FILE ]
  then
        echo  "MyService is enabled"
  else
        echo  "MyService is disabled"
  fi
  ;;
  *)
  echo "Usage0 {start|stop|status|restart}"  
esac
将其保存到/etc/init.d/目录下面,我将其命名为myservice,然后运行chmod a+x myservice
[root@dany init.d]# pwd
/etc/init.d
[root@dany init.d]# chkconfig --add myservice
[root@dany init.d]# chkconfig --level 35 myservice  on
[root@dany init.d]# /etc/init.d/myservice start
MyService is already on!
[root@dany init.d]# /etc/init.d/myservice status
MyService  is enabled
[root@dany init.d]# /etc/init.d/myservice stop
Stoping MyService :                                        [  确定  ]
[root@dany root]# /etc/init.d/myservice status
MyService is disabled
[root@dany root]# /etc/init.d/myservice stop
MyService is not on!
[root@dany init.d]# /etc/init.d/myservice start
Starting MyService:                                        [  确定  ]
[root@dany init.d]# /etc/init.d/myservice
Usage:/etc/init.d/myservice {start|stop|status|restart}
[root@dany init.d]#
呵呵,现在每次启动都会自动的加载我的服务。
上面的那个shell脚本主要是start和stop两个函数。对输入的参数作处理。
# description: This is myservice
# chkconfig: 35 100 15
上面的两句中,前一句是在文本界面下面运行
ntsysv的时候在myservice是按F1时显示的帮助。
后面一句指定了服务执行的level和优先级。
想想还是很简单的。呵呵!
 楼主| 发表于 2002-12-20 16:56:21 | 显示全部楼层
总的来说,编写服务脚本,关键是编写start和stop函数,以及对
输入产生的处理。有关功能的实现都可以放在start函数里面。
另外可以使用/etc/rc.d/init.d/functions里面定义的一些函数。
这些函数都比较简单易懂。
发表于 2002-12-20 17:07:20 | 显示全部楼层
挺实用的,呵呵。
其实也可以找一个现成的脚本来改一下,把你的程序加进去。
发表于 2002-12-31 13:59:40 | 显示全部楼层
good
看来这真是shell基本功了。哈。。。。。
发表于 2003-1-3 02:11:32 | 显示全部楼层

拉回家研究研究

顺便推荐dany兄弟作shell版主!
发表于 2003-1-3 08:48:14 | 显示全部楼层
我觉得dany兄应该当编程版的版主,他可是坛子里难得的编程高手啊呀。:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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