下面是vsftpd的一个副本,我需要一些在这个脚本中提到的一些脚本的解释:
#!/bin/bash # ### BEGIN INIT INFO # Provides: vsftpd # Required-Start: $local_fs $network $named $remote_fs $syslog # Required-Stop: $local_fs $network $named $remote_fs $syslog # Short-Description: Very Secure Ftp Daemon # Description: vsftpd is a Very Secure FTP daemon. It was written completely from # scratch ### END INIT INFO # 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 RETVAL=0 prog="vsftpd" start() { # Start daemons. # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 1 [ -x /usr/sbin/vsftpd ] || exit 1 if [ -d /etc/vsftpd ] ; then CONFS=`ls /etc/vsftpd/*.conf 2>/dev/null` [ -z "$CONFS" ] && exit 6 for i in $CONFS; do site=`basename $i .conf` echo -n $"Starting $prog for $site: " daemon /usr/sbin/vsftpd $i RETVAL=$? echo if [ $RETVAL -eq 0 ]; then touch /var/lock/subsys/$prog break else if [ -f /var/lock/subsys/$prog ]; then RETVAL=0 break fi fi 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|try-restart|force-reload) if [ -f /var/lock/subsys/$prog ]; then stop start RETVAL=$? fi ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|try-restart|force-reload|status}" exit 1 esac exit $RETVAL
问题一
&&和||之间的区别是什么? 在下面的命令中签名,这只是一个简单的方法来做一个简单的检查,或者是完全不同的一个if[..something..]; then ..something.. fi if[..something..]; then ..something.. fi :
# Check that networking is up. [ ${NETWORKING} = "no" ] && exit 1 [ -x /usr/sbin/vsftpd ] || exit 1
问题二
我得到什么-eq和-gt是( equal to , greater than ),但有一个简单的网站,解释什么-x , -d和-f是?
问题三
它说,所需的启动是$local_fs $network $named $remote_fs $syslog但我不能看到任何地方检查这些。
任何帮助将是apreciated
在我的操作系统上运行Fedora 12。 从/etc/init.d/vsftpd复制的脚本
回答我
这只是一个速记符号。
这里:
[ ${NETWORKING} = "no" ] && exit 1
它检查${NETWORKING}是否设置为"no" 。 如果这返回false(networking启用),那么第二部分不会被评估(出口1),因为它已经是假的(&&,逻辑连接)。
反过来说:
[ -x /usr/sbin/vsftpd ] || exit 1
我们有“或”在这里。 所以,基本上,如果vsftpd存在,那么第一部分是真实的,没有进一步的检查(无退出)。
答案二
男子testing :
-x FILE FILE exists and execute (or search) permission is granted -d FILE FILE exists and is a directory -f FILE FILE exists and is a regular file
答案三
这些部分应该从外部parsing。 有关LSB标题的更多信息,请参阅此处。
这些都是与bash有关的问题,所以你的主要信息来源应该是一个man bash (我同意可以是一个非常…强烈的经验)。
至于你的问题:
chkconfig服务pipe理器的指令,它将处理依赖关系以及基于这些“注释”的服务的启动/closures顺序。 是的,我同意这也相当混乱。