文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>vsftpd 自动启动脚本

vsftpd 自动启动脚本

时间:2008-06-16  来源:oychw

vsftpd 自动启动脚本

磁针石

联系方式: QQ:37391319 gmail and gtalk: [email protected]

 

参考资料

2008-6-16   初稿

 

简介

 

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

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

/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。同样的有killproc,status。

/var/lock/subsys/$prog的作用待考证:http://www.chinaunix.net/jh/4/321071.html的解释如下:很多程序需要判断是否当前已经有一个实例在运行,这个目录就是让程序判断是否有实例运行的标志,比如说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

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载