1. 程式人生 > 其它 >linux 常用自定義命令、自定義執行指令碼

linux 常用自定義命令、自定義執行指令碼

技術標籤:Linuxlinuxshell指令碼語言

以下自定義命令維護在~/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 &