一个shell脚本

  之前学过shell脚本,但是工作中一直没有用到,今天由于要搞一个定时任务,为了防止重复启动php脚本,就需要写一个shell,

学到的东西终于用到了,用记住的那些知识点写了这个脚本,在此记录备注说明一下,希望能够帮助大家回忆起一些相关知识点。

 下面是脚本内容:

*************************************

#!/bin/bash //声明要使用哪个shell

下面是备注文件 这可是一个好习惯奥

# 运行第三方分享脚本shell 
# Copyright (c) 2012, Jiehun.com.cn Inc. All Rights Reserved
# @author 77500933@qq.com
# @date 2012-7-18
# @version 1.0

//设置相关变量
filePath='/home/zhanghaozheng/workspace/iHapN/trunk/tools/cooperation/CrondShare.php'
scriptName='CrondShare.php'
logFile='/tmp/crond_share.log'
sitePath='/home/zhanghaozheng/jiehun'

declare -i logFileLines=0 //定义整形变量

#文件最大行数 超过则覆盖
declare -i maxFileLine=2000 //定义整形变量

//接收执行sh传过来的参数
#最大行数允许参数控制
if [ -n "$1" ];then //判断参数是否为空
    maxFileLine=$1
fi

//定义函数
function getLogFileLines()
{
    file=$1 //接受参数1
    if [ -f "$file" ];then //判断文件是否存在
        echo `cat "$file"|wc -l` //获取文件行数
    else
        echo 0
    fi 
}

logFileLines=`getLogFileLines "$logFile"`; //调用函数并接收返回值赋给logFileLines

#如果脚本已经启动就不再启动
s=`ps aux | grep "$scriptName"`; //在进程中查找脚本名称来确定脚本进程是否启动
mark=`echo $s | grep "/usr/bin/php"` //确认是否是php进程
query='cd "$sitePath" && /usr/bin/php tools/start.php CrondShare="$filePath" -d'
if [ "$mark" == "" ]; then  //如果进程不存在则启动进程
        #防止记录文件过大
        if [ "$logFileLines" -gt "$maxFileLine" ]; then  比较两个参数大小
               eval $query  > "$logFile"  2>&1  //执行字符串
        else
               eval $query  >> "$logFile"  2>&1 //执行字符串
        fi
else
        echo 'script is runing' >> "$logFile"
fi


exit 0 //正常执行后并退出

 

posted @ 2012-07-18 18:20  阿正-WEB  阅读(555)  评论(0编辑  收藏  举报