一个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 //正常执行后并退出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架