自己编写的实例
2000 个接口调用请求
#!/bin/bashphoneList=(1590000000 15800000000 15700000000)for phone in ${phoneList[*]}do echo "${phone}========>" curl --location --requrest POST 'http:/domain.com/sms/sendSms' --form 'phonenum="'$phone'"' --form 'templateId="1111111"'done
其他实例
清除6天前的备份数据
#!/bin/bash#GitBackDir="/alidata/gitData/backups/"CleanDay="6"if [ -d ${GitBackDir} ];then cd ${GitBackDir} find ${GitBackDir} -type f -mtime +${CleanDay} -exec rm -f {} \;else exit 1fi
多个进程同时处理任务
#!/bin/bashstep=5while truedo current_consumer_count=`ps -ef | grep -v grep | grep push-wechat-message/placard | wc -l` # 起10个进程去跑这个内容,当检测到跑的进程个数小于10个的时候就启动 if [[ $current_consumer_count -lt 10 ]];then /usr/local/php/bin/php /alidata/www/limicode2016/api_service_account_limiketang_com/yii push-wechat-message/placard & echo $current_consumer_count echo "起一个,$(date +%F-%T)" sleep $step fidone
定时任务小于每分钟
#!/bin/bashstep=10 # 每 10s 执行一次# step=30 # 每 30s 执行一次# 将本脚本添加到定时任务中 * * * * * /bin/bash /usr/local/bin/banzhuren_api_limiketang_crontab.shfor (( i = 0; i < 60; i=(i+step) )); do /usr/local/php/bin/php /alidata/www/limicode2016/api_service_account_limiketang_com/yii student-report/send-report sleep $stepdoneexit 0
自动拉去git代码(jenkiens)
#!/bin/bash_print_color_line(){ # 定义打印函数 echo -e "#-----------------------------------------------------------------------------------------" echo -e "\e[1m$1\e[0m" echo -e "#-----------------------------------------------------------------------------------------"}if [ $# -ne 1 ];then # 判断输入参数必须为1个 echo "Please input an arguement:"fi#Git tag号Tag=$2# git 备份路径LocalBackDir=/alidata/gitData/backups# 备份服务器 登录账户RemoteUser=rootcase $1 in api_pay_limixuexi) #git url: ssh://git@git.limikeji.com:10022/limi-backend-pay/limi-backend-pay.git Projectdir=' /alidata/www/limicode2016/api_pay_limixuexi_com' # 定义目标目录并跳转 cd ${Projectdir} if [ -n "$Tag" ];then _print_color_line "[$(date)] Rollback to tag ${Tag} begin" cd $Projectdir \ && git checkout master \ && git checkout $Tag _print_color_line "[$(date)] Rollback to tag ${Tag} complete" else _print_color_line "[$(date)] Git pull begin" cd $Projectdir \ && git checkout master \ && git pull _print_color_line "[$(date)] Git pull end" fi chown www:www -R ${Projectdir} # 更新了目录所有人 ;;api_service_account) #git url: ssh://git@git.limikeji.com:10022/limi-banzhuren/banzhuren_service_account.git Projectdir='/alidata/www/limicode2016/api_service_account_limiketang_com/' cd ${Projectdir} if [ -n "$Tag" ];then _print_color_line "[$(date)] Rollback to tag ${Tag} begin" cd $Projectdir \ && git checkout master \ && git checkout $Tag _print_color_line "[$(date)] Rollback to tag ${Tag} complete" else _print_color_line "[$(date)] Git pull begin" cd $Projectdir \ && git checkout master \Already at oldest change 1,1 Top cd $Projectdir \ && git checkout master \ && git pull _print_color_line "[$(date)] Git pull end" fi chown www:www -R ${Projectdir} ;; service_account) #git url: ssh://git@git.limikeji.com:10022/limi-banzhuren/banzhuren_service_account_web.git Projectdir='/alidata/www/limicode2016/service_account_limiketang_com' cd ${Projectdir} if [ -n "$Tag" ];then _print_color_line "[$(date)] Rollback to tag ${Tag} begin" cd $Projectdir \ && git checkout master \ && git checkout $Tag _print_color_line "[$(date)] Rollback to tag ${Tag} complete" else _print_color_line "[$(date)] Git pull begin" cd $Projectdir \ && git checkout master \ && git pull _print_color_line "[$(date)] Git pull end" fi chown www:www -R ${Projectdir} ;; *) ;;esac#/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