标签:进程 level dep 就删除 scripts 灰度 backup bsp 日志功能
在实际工作中小编遇到了一个问题那就是当我去操作部署脚本的时候,另一个人也可以操作,这怎么能行啊,后来小编就觉得重新优化下代码,给它加一个进程锁
老规矩,先梳理下思路:
同一时间内,脚本只能够允许一个人来操作,那么也就是说
只要脚本执行就创建一个文件,只要存在这个文件,那么就让脚本退出,同时提示“脚本真在运行中”,脚本执行完毕,就删除创建的文件
代码如下
#!/bin/bash# 功能:打包代码# 名称:deploy.sh# 作者:灰度# 版本:0.4# 联系方式:xxxxx# 日志功能write_log(){LOG_DATE=`date +%F`LOG_TIME=`date +%T`buzhou="$1"echo " ${LOG_DATE} ${LOG_TIME} $0${buzhou}" >> /data/logs/deploy.log}# 增加锁文件add_lock(){echo "增加锁文件"touch /tmp/deploy.pidwrite_log "增加锁文件"}# 删除锁文件del_lock(){echo "删除锁文件"rm -f /tmp/deploy.pidwrite_log "删除锁文件"}# 打包代码tar_code(){echo "打包代码"ssh root@192.168.56.12 "/bin/bash /data/scripts/code_tar.sh"write_log "打包代码"}# 传输代码scp_code(){echo "传输代码"cd /data/codes/[ -f django.tar.gz ] && rm -f django.tar.gz[ -d django ] && rm -rf djangoscp root@192.168.56.12:/data/code/django.tar.gz ./write_log "传输代码"}# 关闭应用serv_stop(){echo "关闭nginx应用"/data/server/nginx/sbin/nginx -s stopwrite_log "关闭nginx应用"echo "关闭django应用"django_pid=$(lsof -Pti :8000)kill "${django_pid}"write_log "关闭django应用"}# 解压代码untar_code(){echo "解压代码"cd /data/codes/tar xf django.tar.gzwrite_log "解压代码"}# 放置代码fangzhi_code(){echo "备份原文件"B_TIME=$(date +%Y%m%d%H%M%S)mv /data/server/itcast/test1/views.py /data/backup/views.py-"${B_TIME}"write_log "备份原文件"echo "放置新文件"mv /data/codes/django/views.py /data/server/itcast/test1/write_log "放置新文件"}# 开启应用serv_star(){echo "开启django应用"source /data/virtual/venv/bin/activatecd /data/server/itcast/python manage.py runserver >>/dev/null 2>&1 &deactivatewrite_log "开启django应用"echo "开启nginx应用"/data/server/nginx/sbin/nginxwrite_log "开启nginx应用"}# 检查check(){echo "检查部署效果"netstat -tnulp | grep ‘:80‘write_log "检查部署效果"}main(){if [ -f /tmp/deploy.pid ]thenecho "$0 脚本正在执行中..."exitelseadd_locktar_codescp_codeserv_stopuntar_codefangzhi_codeserv_starcheckdel_lockfi}main
标签:进程 level dep 就删除 scripts 灰度 backup bsp 日志功能
原文地址:http://www.cnblogs.com/syketw23/p/7667775.html