自己编写的实例

2000 个接口调用请求

  1. #!/bin/bash
  2. phoneList=(1590000000 15800000000 15700000000)
  3. for phone in ${phoneList[*]}
  4. do
  5. echo "${phone}========>"
  6. curl --location --requrest POST 'http:/domain.com/sms/sendSms' --form 'phonenum="'$phone'"' --form 'templateId="1111111"'
  7. done

其他实例

清除6天前的备份数据

  1. #!/bin/bash
  2. #
  3. GitBackDir="/alidata/gitData/backups/"
  4. CleanDay="6"
  5. if [ -d ${GitBackDir} ];then
  6. cd ${GitBackDir}
  7. find ${GitBackDir} -type f -mtime +${CleanDay} -exec rm -f {} \;
  8. else
  9. exit 1
  10. fi

多个进程同时处理任务

  1. #!/bin/bash
  2. step=5
  3. while true
  4. do
  5. current_consumer_count=`ps -ef | grep -v grep | grep push-wechat-message/placard | wc -l`
  6. # 起10个进程去跑这个内容,当检测到跑的进程个数小于10个的时候就启动
  7. if [[ $current_consumer_count -lt 10 ]];then
  8. /usr/local/php/bin/php /alidata/www/limicode2016/api_service_account_limiketang_com/yii push-wechat-message/placard &
  9. echo $current_consumer_count
  10. echo "起一个,$(date +%F-%T)"
  11. sleep $step
  12. fi
  13. done

定时任务小于每分钟

  1. #!/bin/bash
  2. step=10 # 每 10s 执行一次
  3. # step=30 # 每 30s 执行一次
  4. # 将本脚本添加到定时任务中 * * * * * /bin/bash /usr/local/bin/banzhuren_api_limiketang_crontab.sh
  5. for (( i = 0; i < 60; i=(i+step) )); do
  6. /usr/local/php/bin/php /alidata/www/limicode2016/api_service_account_limiketang_com/yii student-report/send-report
  7. sleep $step
  8. done
  9. exit 0

自动拉去git代码(jenkiens)

  1. #!/bin/bash
  2. _print_color_line(){ # 定义打印函数
  3. echo -e "#-----------------------------------------------------------------------------------------"
  4. echo -e "\e[1m$1\e[0m"
  5. echo -e "#-----------------------------------------------------------------------------------------"
  6. }
  7. if [ $# -ne 1 ];then # 判断输入参数必须为1个
  8. echo "Please input an arguement:"
  9. fi
  10. #Git tag号
  11. Tag=$2
  12. # git 备份路径
  13. LocalBackDir=/alidata/gitData/backups
  14. # 备份服务器 登录账户
  15. RemoteUser=root
  16. case $1 in
  17. api_pay_limixuexi)
  18. #git url: ssh://git@git.limikeji.com:10022/limi-backend-pay/limi-backend-pay.git
  19. Projectdir=' /alidata/www/limicode2016/api_pay_limixuexi_com' # 定义目标目录并跳转
  20. cd ${Projectdir}
  21. if [ -n "$Tag" ];then
  22. _print_color_line "[$(date)] Rollback to tag ${Tag} begin"
  23. cd $Projectdir \
  24. && git checkout master \
  25. && git checkout $Tag
  26. _print_color_line "[$(date)] Rollback to tag ${Tag} complete"
  27. else
  28. _print_color_line "[$(date)] Git pull begin"
  29. cd $Projectdir \
  30. && git checkout master \
  31. && git pull
  32. _print_color_line "[$(date)] Git pull end"
  33. fi
  34. chown www:www -R ${Projectdir} # 更新了目录所有人
  35. ;;
  36. api_service_account)
  37. #git url: ssh://git@git.limikeji.com:10022/limi-banzhuren/banzhuren_service_account.git
  38. Projectdir='/alidata/www/limicode2016/api_service_account_limiketang_com/'
  39. cd ${Projectdir}
  40. if [ -n "$Tag" ];then
  41. _print_color_line "[$(date)] Rollback to tag ${Tag} begin"
  42. cd $Projectdir \
  43. && git checkout master \
  44. && git checkout $Tag
  45. _print_color_line "[$(date)] Rollback to tag ${Tag} complete"
  46. else
  47. _print_color_line "[$(date)] Git pull begin"
  48. cd $Projectdir \
  49. && git checkout master \
  50. Already at oldest change 1,1 Top cd $Projectdir \
  51. && git checkout master \
  52. && git pull
  53. _print_color_line "[$(date)] Git pull end"
  54. fi
  55. chown www:www -R ${Projectdir}
  56. ;;
  57. service_account)
  58. #git url: ssh://git@git.limikeji.com:10022/limi-banzhuren/banzhuren_service_account_web.git
  59. Projectdir='/alidata/www/limicode2016/service_account_limiketang_com'
  60. cd ${Projectdir}
  61. if [ -n "$Tag" ];then
  62. _print_color_line "[$(date)] Rollback to tag ${Tag} begin"
  63. cd $Projectdir \
  64. && git checkout master \
  65. && git checkout $Tag
  66. _print_color_line "[$(date)] Rollback to tag ${Tag} complete"
  67. else
  68. _print_color_line "[$(date)] Git pull begin"
  69. cd $Projectdir \
  70. && git checkout master \
  71. && git pull
  72. _print_color_line "[$(date)] Git pull end"
  73. fi
  74. chown www:www -R ${Projectdir}
  75. ;;
  76. *)
  77. ;;
  78. esac
  79. #/etc/init.d/php-fpm reload

check.sh

#!/bin/bash

instance_ip=`hostname -I|awk '{print $1}'`
Hostname=`hostname |awk -F[-] '{print $2}'`
label="log_check"
file=/alidata/rsyslog/`date +%F`/127.0.0.1/kernel.log
name=`hostname`

if [ ${Hostname} != "prod" ];then
       echo 'Off line environment'
       exit
else
                  egrep -v  "ilogtail|sleep"  $file |egrep  -i oom-kill >/dev/null
                  if [ $? -eq 0 ];then
                          echo "$label 1" | curl --data-binary @- http://172.16.16.39:9091/metrics/job/pushgateway/instance/${name}$instance_ip
                          cat  $file  >> ${file}.old
                          sleep 300
                          > $file
                  else
                          echo "$label 0" | curl --data-binary @- http://172.16.16.39:9091/metrics/job/pushgateway/instance/${name}$instance_ip
                  fi
fi

切割nginx 日志

#!/usr/bin/env bash
#-*- coding:utf-8 -*-
# author:Shen Jianyu
# datetime:2019/1/22 18:02

# 兼容lsp,lessonlog,这种程序自切割类型日志
chown -R www.www /alidata/log/nginx/
readonly today=`date +%Y%m%d`
# nginx进程
readonly pid_path="/var/run/nginx.pid"
# 切割后的日志备份目录
readonly logs_backup_path="/alidata/logs/logs_backup"
# 七天之前时间戳
readonly deldate=`date -d -7day +%Y-%m-%d`
# 日志文件存放目录
readonly mnt_logs_path="/mnt/log/nginx"
readonly alidata_logs_path="/alidata/log/nginx"
# 脚本执行日志
readonly shell_log="/alidata/logs/logs_backup/logrotate"

function _check_program()
{
       # 判断程序(nginx / swoole)
    ps -ef|grep Swoole|grep -v grep &> /dev/null ;swoole_status=$?

        if [ ${swoole_status} -eq 0 ] ;then
            /usr/local/bin/swoole-start.sh \
            && echo "[$(date)] Program: Swoole Status: refresh" >> ${shell_log}
        else
            kill -USR1 $(cat /var/run/nginx.pid) \
            && echo "[$(date)] Program: Nginx Status: refresh" >> ${shell_log}
        fi
}


function _link_mnt()
{
        # 删除空文件
    cd ${mnt_logs_path} \
    && echo -e "[$(date)] Null_LogFile:\n$(ls -l ${mnt_logs_path} | grep " 0 " | awk '{print $9}')" >> ${shell_log}
    cd ${mnt_logs_path} \
    && ls -l ${mnt_logs_path} | grep " 0 " | awk '{print $9}' | xargs rm -f

    [ -d $logs_backup_path ]||mkdir -p $logs_backup_path
    [ -f /alidata/log/nginx/log_dir.txt  ] && rm -f /alidata/log/nginx/log_dir.txt

        # 日志文件绝对路径
    local mnt_log_file=$(find ${mnt_logs_path} -type f|grep -v ${today})

        for LOG in ${mnt_log_file}
        do
            rq=`date -d "yesterday" +%Y-%m-%d`
            # 打包
            cd ${LOG%/*} \
            && tar -zcPf ${logs_backup_path}/${LOG##*/}_${rq}.log.tar.gz ${LOG##*/}
            rm -f ${LOG} \
            && echo "[$(date)] LogFile: ${LOG} Status: logrotate" >> ${shell_log}
        done

    _check_program
        # 清理过期备份
    find ${logs_backup_path} -name "*$deldate*" -type f -exec rm -f {} \;

}


function _no_link_mnt()
{

        # 删除空文件
    cd ${mnt_logs_path} \
    && echo -e "[$(date)] Null_LogFile:\n$(ls -l ${mnt_logs_path} | grep " 0 " | awk '{print $9}')" >> ${shell_log}
    cd ${mnt_logs_path} \
    && ls -l ${mnt_logs_path} | grep " 0 " | awk '{print $9}' | xargs rm -f

    cd ${alidata_logs_path} \
    && echo -e "[$(date)] Null_LogFile:\n$(ls -l ${alidata_logs_path} | grep " 0 " | awk '{print $9}')" >> ${shell_log}
    cd ${alidata_logs_path} \
    && ls -l ${alidata_logs_path} | grep " 0 " | awk '{print $9}' | xargs rm -f

    [ -d $logs_backup_path ]||mkdir -p $logs_backup_path
    [ -f /alidata/log/nginx/log_dir.txt ] && rm -f /alidata/log/nginx/log_dir.txt
    [ -f /mnt/log/nginx/log_dir.txt ] && rm -f /mnt/log/nginx/log_dir.txt

        # 日志文件绝对路径
    local mnt_log_file=$(find ${mnt_logs_path} -type f|grep -v ${today})
    local alidata_log_file=$(find ${alidata_logs_path} -type f|grep -v ${today})

        for LOG in ${mnt_log_file}
        do
            rq=`date -d "yesterday" +%Y-%m-%d`
            # 打包
            cd ${LOG%/*} \
            && tar -zcPf ${logs_backup_path}/${LOG##*/}_${rq}.log.tar.gz ${LOG##*/}
            rm -f ${LOG} \
            && echo "[$(date)] LogFile: ${LOG} Status: logrotate" >> ${shell_log}
        done

        for LOG in ${alidata_log_file}
        do
            rq=`date -d "yesterday" +%Y-%m-%d`
            # 打包
            cd ${LOG%/*} \
            && tar -zcPf ${logs_backup_path}/${LOG##*/}_${rq}.log.tar.gz ${LOG##*/}
            rm -f ${LOG} \
            && echo "[$(date)] LogFile: ${LOG} Status: logrotate" >> ${shell_log}
        done

    _check_program
        # 清理过期备份
    find ${logs_backup_path} -name "*$deldate*" -type f -exec rm -f {} \;
}


        # 主程序
    if [ -L /mnt/log ];then
        echo "-----------------------------------BEGIN----------------------------------------------" >> ${shell_log}
        _link_mnt
        echo "------------------------------------END-----------------------------------------------" >> ${shell_log}
    else
        echo "-----------------------------------BEGIN----------------------------------------------" >> ${shell_log}
        _no_link_mnt
        echo "------------------------------------END-----------------------------------------------" >> ${shell_log}
    fi