Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19732139
  • 博文数量: 679
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 9308
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 10:51
文章分类

全部博文(679)

文章存档

2012年(5)

2011年(38)

2010年(86)

2009年(145)

2008年(170)

2007年(165)

2006年(89)

分类:

2008-06-16 16:40:59

vsftpd 自动启动脚本

磁针石

联系方式: QQ:37391319 gmail and gtalk: xurongzhong@gmail.com

 

参考资料

2008-6-16   初稿

 

简介

 

# chkconfig: - 60 50 这个地方还不是很理解,待以后了解chkconfig添加的方法。 介绍如下:对应/etc/rc.d/rc#.d中的S##K##,修改这两个参数,用chkconfig add安装。

/etc/rc.d/init.d/functions 表示调用函数库,后面的daemonstatuskillproc等函数都来自这里

/etc/sysconfig/network 用来检查网络配置,只是检查是否有网络配置而已。NETWORKING这个地方一直都没有配置过,莫非是安装系统的时候自动识别到网卡,就修改这个值了?

如果没有网络配置,正常退出。[ ${NETWORKING} = "no" ] && exit 0

如果没有bin文件存在,正常退出。[ -x /usr/sbin/vsftpd ] || exit 0 。这句写得比较有技巧。

declare -a sites,声明一个数组,数组的内容为:sites=(`ls /etc/vsftpd/*.conf`)site_count=${#sites[@]}为数组的元素个数。Shell数组的介绍见:http://blog.chinaunix.net/u/24624/showart_469177.html,这个博客还都是自己的心得总结,比较实用,不错。

daemon true这个地方还不是很理解,待以后研究/etc/rc.d/init.d/functions。同样的有killprocstatus

/var/lock/subsys/$prog的作用待考证:的解释如下:很多程序需要判断是否当前已经有一个实例在运行,这个目录就是让程序判断是否有实例运行的标志,比如说xinetd,如果存在这个文件,表示已经有 xinetd在运行了,否则就是没有,当然程序里面还要有相应的判断措施来真正确定是否有实例在运行。通常与该目录配套的还有/var/run目录,用来 存放对应实例的PID,如果你写脚本的话,会发现这2个目录结合起来可以很方便的判断出许多服务是否在运行,运行的相关信息等等。

 

 

 

 

 

#!/bin/bash

#

# vsftpd      This shell script takes care of starting and stopping

#             standalone vsftpd.

#

# chkconfig: - 60 50

# description: Vsftpd is a ftp daemon, which is the program \

#              that answers incoming ftp service requests.

# processname: vsftpd

# config: /etc/vsftpd/vsftpd.conf

 

# Source function library.

. /etc/rc.d/init.d/functions

 

# Source networking configuration.

. /etc/sysconfig/network

 

# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0

 

[ -x /usr/sbin/vsftpd ] || exit 0

 

RETVAL=0

prog="vsftpd"

 

start() {

        # Start daemons.

 

        if [ -d /etc/vsftpd ] ; then

                declare -a sites

                sites=(`ls /etc/vsftpd/*.conf`)

                site_count=${#sites[@]}

                index=0

 

                while [ "${index}" -lt "${site_count}" ] ; do

                        site=`basename ${sites[${index}]} .conf`

                        echo -n $"Starting $prog for $site: "

                                ( /usr/sbin/vsftpd ${sites[${index}]} &)

                                daemon true

                                RETVAL=$?

                        echo

                        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog

                        let "index = index + 1"

                done

        else

                RETVAL=1

        fi

        return $RETVAL

}

 

stop() {

        # Stop daemons.

        echo -n $"Shutting down $prog: "

        killproc $prog

        RETVAL=$?

        echo

        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog

        return $RETVAL

}

 

# See how we were called.

case "$1" in

  start)

        start

        ;;

  stop)

        stop

        ;;

  restart|reload)

        stop

        start

        RETVAL=$?

        ;;

  condrestart)

        if [ -f /var/lock/subsys/$prog ]; then

            stop

            start

            RETVAL=$?

        fi

        ;;

  status)

        status $prog

        RETVAL=$?

        ;;

  *)

        echo $"Usage: $0 {start|stop|restart|condrestart|status}"

        exit 1

esac

 

exit $RETVAL

阅读(9991) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~