linux 常用自定義命令、自定義執行指令碼
阿新 • • 發佈:2020-12-15
以下自定義命令維護在~/bin目錄下
新建了自定義命令之後,給該資料夾下的全部自定義命令新增執行許可權,參考如下
chmod u+x ./*
自定義命令建立示例
自定義log命令,用於檢視日誌檔案等
vi /bin/log
內容如下:
#!/bin/bash
if [ ! -n "$2" ]; then
tail -100f $1
else
tail -$2f $1
fi
給log檔案賦予可執行許可權
cd ~/bin
chmod u+x log
使用示例,假如有info.log日誌檔案,可使用log命令檢視日誌檔案
log info.log //預設列印最後100行,取決於自定義命令定義 或者 log info.log 500 //列印最後500行日誌
自定義命令參考
pps:檢視以java -jar方式跑的java程式資訊,可替換
#!/bin/bash
if [ ! -n "$1" ]; then
ps -ef | grep 'java -jar'
else
ps -ef | grep $1
fi
ps:列印某個匹配資料夾下的日誌
#!/bin/bash
if [ ! -n "$2" ]; then
tail -100f /data/services/hfpm-$1/log/app.log
else
tail -$2f /data/services/hfpm-$1/log/app.log
fi
自定義指令碼參考
springboot部署指令碼run.sh:
#!/bin/bash
set -e # 報錯不在繼續執行
SERVICE_NAME=${PWD##*/}
JAR=$SERVICE_NAME.jar
MPORT=8021
echo ">>> git pull"
git pull
echo ">>> mvn clean package -Dmaven.javadoc.skip=true"
mvn clean package -Dmaven.javadoc.skip=true -Dmaven.javadoc.skip=true
echo ">>> cd target"
cd target
mv app.jar $JAR
echo ">>> kill -9 $(lsof -t -sTCP:LISTEN -i:$MPORT)"
kill -9 $(lsof -t -sTCP:LISTEN -i:$MPORT)
JAVA_OPTS="-Xms512m -Xmx1536m -Dspring.profiles.active=dev"
echo ">>> nohup java -jar $JAVA_OPTS $JAR > ../log/app.log &"
BUILD_ID=dontKillMe nohup java -jar $JAVA_OPTS $JAR > ../log/app.log &
minio物件儲存伺服器啟動指令碼start.sh:
#!/bin/bash
PIDS=$(ps aux | grep minio | grep -v grep | awk -F' ' {'print $2'})
if [ "$PIDS" != "" ]; then
kill -9 ${PIDS[0]}
else
echo 'no minio running...'
fi
echo '>>> start minio'
MINIO_ACCESS_KEY=V3IJR32L89EGIN8ZYJUF MINIO_SECRET_KEY=RDL+gs+RpPkkB0uIPmDbAyO3duX7VH8WfDBmObT6 nohup ./minio server /data/data > minio.log 2>&1 &
日誌備份重啟指令碼restart.sh:
#!/bin/bash
set -e # 報錯不在繼續執行
SVC=platform # 服務名稱
SVCDIR=/app/u01/services/ # 服務jar包所在資料夾
LOGDIR=/app/u01/logcron/ # 日誌目錄
BAKCOUNT=3 # 每多少次重啟刪除最早一次備份
JAR=$SVCDIR$SVC".jar" # 服務jar包位置
# 先停掉服務
kill -9 $(jps -ml | grep $SVC | awk '{print $1}')
# kill -9 $(lsof -n -P -t -i:$MPORT)
while [ -n "$(jps -ml | grep $SVC | awk '{print $1}')" ];do
sleep 0.1
done
# 如果日誌目錄不存在則新建
if [ ! -d $LOGDIR ]; then
mkdir $LOGDIR
fi
# 找出當前最大的備份數
MAX=0
for i in $(ls $LOGDIR | grep $SVC)
do
temp=${i/$SVC/}
temp=${temp/".log"/}
if [ $temp -gt $MAX ];then
MAX=$temp
fi
done
# 如果還不是最大備份數則在當前日誌基礎上加一
# 否則刪除最早的日誌備份(如果滿足條件),並向前移動一個位置
if [ $MAX -lt $BAKCOUNT ];then
MAX=$(expr $MAX + 1)
else
rm -rf $LOGDIR$SVC"1.log"
for i in $(seq 2 $BAKCOUNT);do
mv -f $LOGDIR$SVC$i".log" $LOGDIR$SVC$(expr $i - 1)".log"
done
fi
LOGFILE=$LOGDIR$SVC$MAX".log"
BUILD_ID=dontKillMe nohup java -jar -Xms2048m -Xmx4096m -Dspring.profiles.active=site $JAR >> $LOGFILE &