断断续续看了几天unixshell编程,我终于能大概看懂这个脚本了。
-eq大概是等于的意思,-n不知道是什么意思。-z大概是为0的意思。

#!/bin/bash
#
#
 sendmail      This shell script takes care of starting and stopping
#
               sendmail.
#
#
 chkconfig: 2345 80 30
#
 description: Sendmail is a Mail Transport Agent, which is the program \
#
              that moves mail from one machine to another.
#
 processname: sendmail
#
 config: /etc/mail/sendmail.cf
#
 pidfile: /var/run/sendmail.pid

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

# Source networking configuration.
#
/etc/sysconfig/network内容如下
#
NETWORKING=yes
#
HOSTNAME=localhost.localdomain

-/etc/sysconfig/network ] && . /etc/sysconfig/network

# Source sendmail configureation.
#
/etc/sysconfig/sendmail内容如下
#
DAEMON=yes
#
QUEUE=1h,表示轮询待发邮件队列每小时一次

if [ -/etc/sysconfig/sendmail ] ; then
    
. /etc/sysconfig/sendmail
else
    DAEMON
=no
    QUEUE
=1h
fi
#如果$SMQUEUE为0,则SMQUEUE=$QUEUE
#
如果$SMQUEUE还是0,则$SMQUEUE=1h,1小时
-"$SMQUEUE" ] && SMQUEUE="$QUEUE"
-"$SMQUEUE" ] && SMQUEUE=1h


# Check that networking is up.
#
如果NETWORKING被禁用,退出。
"${NETWORKING}" = "no" ] && exit 0

#如果文件/usr/sbin/sendmail不存在,则退出
-/usr/sbin/sendmail ] || exit 0

#退出状态码初始为0
RETVAL=0
#设置进程名为sendmail
prog="sendmail"

#启动过程
start() {
    
# Start daemons.

    
echo -n $"Starting $prog: "
    
if test -/usr/bin/make --/etc/mail/Makefile ; then
      make all 
-/etc/mail -s
    
else
      
for i in virtusertable access domaintable mailertable ; do
        
if [ -/etc/mail/$i ] ; then
        
#为sendmail(8)制作映射
        makemap hash /etc/mail/$i < /etc/mail/$i
        fi
      
done
    fi
    
/usr/bin/newaliases > /dev/null 2>&1
    
#以守护进程方式加载sendmail
    daemon /usr/sbin/sendmail $([ "x$DAEMON" = xyes ] && echo -bd) \
            $([ 
-"$QUEUE" ] && echo -q$QUEUE$SENDMAIL_OPTARG
    RETVAL
=$?
    
echo
    [ 
$RETVAL -eq 0 ] && touch /var/lock/subsys/sendmail

    
if ! test -/var/run/sm-client.pid ; then
    
echo -n $"Starting sm-client: "
    
touch /var/run/sm-client.pid
    
chown smmsp:smmsp /var/run/sm-client.pid
    daemon 
--check sm-client /usr/sbin/sendmail -L sm-msp-queue -Ac \
            
-$SMQUEUE $SENDMAIL_OPTARG
    RETVAL
=$?
        
echo
        [ 
$RETVAL -eq 0 ] && touch /var/lock/subsys/sm-client
        fi

    
return $RETVAL
}

stop() {
    
# Stop daemons.
    echo -n $"Shutting down $prog: "
    killproc sendmail
    RETVAL
=$?
    
echo
    [ 
$RETVAL -eq 0 ] && rm -/var/lock/subsys/sendmail
    
if test -/var/run/sm-client.pid ; then
        
echo -n $"Shutting down sm-client: "
        killproc sm
-client
        RETVAL
=$?
        
echo
        [ 
$RETVAL -eq 0 ] && rm -/var/run/sm-client.pid
        [ 
$RETVAL -eq 0 ] && rm -/var/lock/subsys/sm-client
    fi
    
return $RETVAL
}

# See how we were called.
#
$1表示第一个参数
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart
|reload)
    stop
    start
    RETVAL
=$?
    ;;
  condrestart)
    
if [ -/var/lock/subsys/sendmail ]; then
        stop
        start
        RETVAL
=$?
    fi
    ;;
  status)
    status sendmail
    RETVAL
=$?
    ;;
  
*)
    
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
    
exit 1
esac

exit $RETVAL
Posted on 2006-03-13 10:52  古代  阅读(425)  评论(0)    收藏  举报