前言 记录一下常用的shell片段 方便自己速查
示例
默认基本为bash脚本 其他解释器会特别说明
获取指定名称的进程并且处理 1 2 3 4 5 6 7 8 9 10 NAME="xxxxxx" ID=`ps -ef | grep "$NAME" | grep -v "grep" | awk '{print $2}'` echo The process pid is $ID for id in $ID do # kill process kill -9 $id echo killed $id done
备份文件带时间后缀 1 2 NAME="xxxx" mv $NAME $NAME'.'`date '+%Y%m%d%H%M%S'`
nohup启动并且重定向输出 1 2 3 4 # 重定向到指定文件 nohup echo 'nihao' > echo.out 2>&1 & # 不输出nohup 日志 nohup echo 'nihao' >/dev/null 2>&1 &
常用单机部署java的脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # !/bin/bash # author ming # date 20211118# upload package name OLDJARNAME='xx-latest.jar' NAMEDEPLOY='xx.jar' # stop the process before ID=`ps -ef | grep "$OLDJARNAME" | grep -v "grep" | awk '{print $2}'` echo The process pid is $ID for id in $ID do kill -9 $id echo killed $id done # 备份当前上个版本的jar mv $OLDJARNAME $OLDJARNAME'.'`date '+%Y%m%d%H%M%S'` # 将刚刚上传的jar 更名为执行jar mv $NAMEDEPLOY $OLDJARNAME nohup java -jar -Xmx1g $OLDJARNAME --spring.profiles.active=test > nohup.out 2>&1 &
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # !/bin/bash # author ming # date 20211118SSH_HOST='user@host' WORKER_PATH='/data/xx' # 复制jar 到服务器 scp ./target/socket-server.jar $SSH_HOST':'$WORKER_PATH # 复制部署shell脚本到服务器 scp ./deploy.sh $SSH_HOST':'$WORKER_PATH # 授权 ssh $SSH_HOST "cd ${WORKER_PATH} && chmod +x ./deploy.sh && ./deploy.sh && tail -f ./nohup.out"
总结 记录一下常用的shell 片段 免得要写的时候 一直找