博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
针对cli模式下的php运维脚本
阅读量:7095 次
发布时间:2019-06-28

本文共 2222 字,大约阅读时间需要 7 分钟。

  hot3.png

需求场景

经常会用php定期执行一些任务,于是使用cli方式运行php,加入个死循环即可,但是不知道为什么php脚本会经常无故死掉,所以写了个sh脚本,结合系统的cron来实现监控。cron每分钟执行一次,如果进程存在则跳过,反之则执行。

#!/bin/bashps -fe|grep "/home/ayhome/push/index.php cli/index/index" |grep -v grepif [ $? -ne 0 ]then  echo "start process....."  nohup /www/wdlinux/php/bin/php /home/ayhome/push/index.php cli/index/index &else  echo "runing....."fi

扩展

  • 需要自定义更多的参数,例如指定执行 模块、控制器、方法 即 m c a 参数
  • 根据参数列出所有进程
  • 结束 根据参数列出的所有进程
  • 重启 根据参数列出的进程
  • 指定进程数

为了完成以上要求,重新脚本如下。

#!/bin/bash#---------------------------------------------if [ $# -lt 2 ]then  echo "Error! Not Enough Arguments."  #默认情况下不让执行  echo "$0 $@"  exit 1fi## 定义变量##---------------------------------------------p=index.php; #脚本文件m=index;         c=index;         a=index;           l=1;  #循环次数k='';  #操作 默认为空  kill 表示杀死指定进程 list 表示列出进程r='';  d='';  s='';  #---------------------------------------------# h:help# p:path defautl index.php# k:kill restart test# s:start# d:down# r:restartwhile getopts "m:c:a:l:h:k:p:s:d:r:" optdo   case $opt in    k)       k=$OPTARG      ;;    p)       p=$OPTARG      ;;    m)       m=$OPTARG      ;;    c)       c=$OPTARG      ;;    a)       a=$OPTARG      ;;    l)       l=$OPTARG      ;;    h)       echo "Usage : sh cron -m index[default] -c index[default] -a index[default] -l 1[default]"      ;;    *)      echo "Usage : sh cron -m index[default] -c index[default] -a index[default] -l 1[default]"      ;;  esacdonepsc="/www/wdlinux/php/bin/php /home/ayhome/wiwid/$p $m/$c/$a";# 获取进程号sn=`ps -ef|grep "$psc" |grep -v grep|awk '{print $2}'`;# 列出所有进程if [[ $k = "list" ]]; then  ps -fe|grep "$psc" |grep -v grep  exitelif [[ $k = "kill" ]]; then   #杀死所有进程  # 先判断是否有进程  if [[ "${sn}" = "" ]]; then    echo 'no runing'  else    ps -eaf |grep "$psc" | grep -v "grep"| awk '{print $2}'|xargs kill -9    echo 'kill all'  fi  exitelif [[ $k = "restart" ]]; then #重启进程  ps -eaf |grep "$psc" | grep -v "grep"| awk '{print $2}'|xargs kill -9  echo 'restart'elif [[ $k = "test" ]]; then  $psc  exitfiif [ "${sn}" = "" ]    #如果为空,表示进程未启动then  for (( i = 0; i < $l; i++ )); do    nohup $psc &  done  echo start ok !else  if [[ $k = "kill" ]]; then    kill 9 $sn    echo 'kill'  else    echo 'runing'  fifi

转载于:https://my.oschina.net/ayhome/blog/888582

你可能感兴趣的文章
Intermec判断文本框内录入的字符是否为回车
查看>>
React-Native 常用组件学习资料链接
查看>>
ASP.NET MVC关于Ajax以及Jquery的无限级联动
查看>>
【转】8086内部结构及原理
查看>>
MySQL--5--subquery和连接
查看>>
页面滚动条 全局样式设置
查看>>
v-if v-else-if v-else
查看>>
掌握Thinkphp3.2.0----CURD
查看>>
子表,父表;一对多,多对一;主键,外键梳理。
查看>>
Codeforces 533B Work Group
查看>>
pymysql查看、更新数据库
查看>>
UVA1479 Graph and Queries
查看>>
Mini program
查看>>
nvl函数和decode
查看>>
Windows 网卡超过序列
查看>>
shiro-简介
查看>>
nndl_读数笔记
查看>>
优化网站设计系列文章总结和导读
查看>>
ORACLE SET命令
查看>>
【Python3爬虫】第一个Scrapy项目
查看>>