shell部分脚本
CentOS Linux release 7.9.2009 (Core)
写的有点累赘,不想改了
项目重启脚本
启动方式 sh restart.sh yourproject.jar
需要填写自己的dir
#!/bin/sh PROJECT_PATH=/your-proj-dir/ PROJECT_NAME=$1 PROJECT_ALL_LOG_NAME=/catalina.out if [ -z "$1" ] then echo "请输入jar包名称" exit fi function getTPid(){ if [ -z "${1}" ]; then tpid=0 return fi #参数 tpid 可能多个 tpidcount=`echo "${1}" | wc -l` #判断是否大于1 是则获取第一个进程,否则赋值为空 if [ $tpidcount -gt 0 ] then tpid=`echo "${1}" | head -n1` else tpid=0 fi } # stop process tpid=`ps -ef|grep ${PROJECT_NAME}|grep java|grep -v grep|grep -v kill|awk '{print $2}' ` getTPid "${tpid}" if test ${tpid} -eq 0 then echo '初次检查:没有进程在运行' else echo '初次检查:有程序在运行,进行关闭' # 是先关闭和其有关的程序,再将其关闭 kill -15 ${tpid} fi sleep 5 tpid=`ps -ef|grep $PROJECT_NAME|grep java|grep -v grep|grep -v kill|awk '{print $2}'` getTPid "${tpid}" if test ${tpid} -eq 0 then echo '再次检查:没有进程在运行' else echo '再次检查:有程序在运行,进行关闭' kill -9 $tpid fi # start process tpid=`ps -ef|grep $PROJECT_NAME|grep java|grep -v grep|grep -v kill|awk '{print $2}'` getTPid "${tpid}" if test ${tpid} -eq 0 then echo '启动新进程.' `nohup java -Xms256m -Xmx512m -jar $PROJECT_PATH$PROJECT_NAME > $PROJECT_PATH$PROJECT_ALL_LOG_NAME 2>&1 &` # `nohup java -Xms256m -Xmx512m -jar ${PROJECT_PATH}${PROJECT_NAME} >> /dev/null 2>&1 & #` echo '启动成功' sleep 2 tail -f $PROJECT_PATH$PROJECT_ALL_LOG_NAME else echo '有进程运行,重启失败' fi
备份、定时删除自己项目中一些特殊文件
#!/bin/bash #设置删除多少天之前的备份 DAYS_AGO=365 #定义日期变量,时间戳的单位以秒为单位 SECOND=1 MINUTE=$((60*$SECOND)) HOUR=$((60*$MINUTE)) DAY=$((24*$HOUR)) WEEK=$((7*$DAY)) #计算当前时间的时间戳表达方法 TIME_NOW=$(($(date +%s -d "$(date +'%Y-%m-%d %H:%M:%S')"))) #多少天之前的 SECONDS_OF_DAYS_AGO=$(($DAYS_AGO * $DAY)) #计算指定天数前的时间戳表达方法 TIME_AGO=$(($TIME_NOW - $SECONDS_OF_DAYS_AGO)) #判断传入的日期是否在设置的日期之前 function isDaysBefore() { DATE=$(($(date +%s -d $1))) if [[ $DATE < $TIME_AGO ]] then echo 1 else echo 0 fi } SOURCE_DIR="/xxx_tmp" BAK_DIR="/xxx_bak" cd "$SOURCE_DIR" #打包文件 tar zcf xxx_prefix_$(date +%Y%m%d).tar.gz img zip mv xxx_prefix_$(date +%Y%m%d).tar.gz $BAK_DIR cd "$BAK_DIR" #删除打包完的文件 rm -rf /xxx/dir1/*; rm -rf /xxx/dir2/*; #删除指定日期之前的 for FOLDER in `ls $BAK_DIR`; do #截取年月日 folder_date=`expr substr $FOLDER 19 8` if [[ $(isDaysBefore ${folder_date}) == 1 ]] then rm -rf /xxx_bak/${FOLDER} fi done
定时删除日志
1 0 * * * /bin/sh /data/shell-script/log-del.sh > /dev/null 2>&1 &
LOG_DIR=/data/logs OLD_DATE=`date --date='1 month ago' +%Y-%m-%d`; for FOLDER in `ls ${LOG_DIR}` do log_file=${LOG_DIR}/${FOLDER}/spring.log.${OLD_DATE}*.gz rm -rf ${log_file} # echo "删除${log_file}成功" done
删除指定日期前的文件
#设置删除多少天之前的备份 DAYS_AGO=60 #定义日期变量,时间戳的单位以秒为单位 SECOND=1 MINUTE=$((60*$SECOND)) HOUR=$((60*$MINUTE)) DAY=$((24*$HOUR)) WEEK=$((7*$DAY)) DEL_DIR="/data/logs" #计算当前时间的时间戳表达方法 TIME_NOW=$(($(date +%s -d "$(date +'%Y-%m-%d %H:%M:%S')"))) #多少天之前的 SECONDS_OF_DAYS_AGO=$(($DAYS_AGO * $DAY)) #计算指定天数前的时间戳表达方法 TIME_AGO=$(($TIME_NOW - $SECONDS_OF_DAYS_AGO)) #判断传入的日期是否在设置的日期之前 function isDaysBefore() { if [ -z "$1" ] then return 0 fi DATE=$(($(date +%s -d $1))) if [[ $DATE < $TIME_AGO ]] then echo 1 else echo 0 fi } function del_dir() { for FILE in `ls $1` do file_date=`expr substr $FILE 12 10` if [[ $(isDaysBefore ${file_date}) == 1 ]] then rm -rf $1/${FILE} echo "删除文件:$1/${FILE}" fi done } #删除指定日期之前的 for FOLDER in `ls $DEL_DIR`; do del_dir $DEL_DIR/${FOLDER} done
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理