开发人员Linux常用shell脚本

40 阅读1分钟

build-backend

后端构建脚本


#!/bin/bash

## 第一次手动拉代码,脚本放置在pom文件同级

# 设置变量
jarName=accounting-backend.jar
logFile=1.out

# 拉取代码 构建项目
git pull
mvn clean package
         
# 停止旧进程
PID=$(pgrep -f $jarName)   
if [ -n "$PID" ]; then
    kill -9 $PID
    echo "结束进程 $PID"
fi

# 启动新进程
cd target
nohup java -jar $jarName > $logFile 2>&1 &

tail -f ./$logFile

build-frontend

前端构建脚本

#!/bin/bash

rm -rf ./build

git pull

npm install
npm run build

echo "Frontend is complete."

log

用户记录日志脚本(用户退出就生成文本)

#!/bin/bash
#story历史记录

HISTORY_LOG_DIR="/tmp/.log/.history"

cat > /etc/profile.d/history_fh.sh << EOF
HISTDIR=${HISTORY_LOG_DIR}
USER_IP=\$(who -u am i 2>/dev/null| awk '{print \$NF}'|sed -e 's/[()]//g')

if [ -z "\${USER_IP}" ]
then
USER_IP=\$(hostname)
fi

if [ ! -d "\${HISTDIR}" ]
then
mkdir -p \${HISTDIR} && chmod 777 \${HISTDIR}
fi

export HISTSIZE=4096
DT=\$(date +%Y%m%d_%H%M%S)
export HISTFILE="\${HISTDIR}/\${LOGNAME}_\${USER_IP}.\${DT}"
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S] "
chmod 600 \${HISTDIR}/* 2>/dev/null
EOF

source /etc/profile

ls-jar

获取所有jar包的内存占用情况

#!/bin/bash

# 获取所有正在运行的Java程序的进程ID
PIDS=$(ps -ef | grep java | grep -v grep | awk '{print $2}')

# 遍历每个进程ID
for PID in $PIDS; do
  JAR_PACKAGE=$(ps -ef | grep "$PID" | awk '{print $10}')
  MEM_USAGE=$(top -o %MEM -b -n 1 | grep "$PID" | awk '{print $6}')
  MEM_PERCENT=$(top -o %MEM -b -n 1 | grep "$PID" | awk '{print $10}')
  # 打印输出
  echo "PID: $PID   Jar Package: $JAR_PACKAGE      Memory Usage: $MEM_USAGE B   Memory Percent: $MEM_PERCENT %"
done

redis

清空redis数据库

redis-cli -h localhost -p 6379 -a [password] <<END
flushall
echo "flushall success"
END

清空指定数据库

使用:redis-flushdb 3 (清空3的数据库)

# !/bin/bash

#第一个参数指定清除库
db=0

if [ -n "$1" ];then
  db=$1
fi

redis-cli -h localhost -p 6379 -a [password] <<END
select ${db}
flushdb
echo "flushdb success"
END

run

部署运行脚本

# !/bin/bash 

#=======环境配置==============
# 刷新配置
#source /etc/profile
# 清空redis
#flushall

#======项目配置(jar包名、日志名称、项目路径)=========
# 项目路径
projectPath=/home/www/bootSimple/
# jar的名称
jarName=bootSimple.jar
# 日志名称
logFile=nohup.out

PID=`ps -ef|grep $jarName |grep -v grep|awk '{print $2}' `
if [ -n "$PID" ]; then
    kill -9 $PID
    echo "结束$PID进程"
fi
nohup java -jar $projectPath$jarName > $projectPath$logFile &
tail -f $projectPath$logFile