Linux下远程升级脚本

先使用wget将升级文件下载到dcu_update文件夹里,然后使用system(“remote_update.sh”)函数调用执行脚本。

remote_update.sh:

[plain] view plain copy
  1. #!bin/sh  
  2. #此脚本放在dcu文件夹的外面  
  3. #杀掉正在运行的dcu进程  
  4. pidlist=`ps -ef |grep "dcu.bin" |grep -v "grep"|awk '{print $2}'`  
  5. echo "id list:$pidlist"  
  6. if [ "$pidlist" = "" ]  
  7. then  
  8.     echo "no app pid alive"  
  9. else  
  10.     for pid in ${pidlist}  
  11.     do  
  12.         kill -9 $pid  
  13.         echo "KILL $pid:"  
  14.         echo "app stop success"  
  15.     done  
  16. fi  
  17.   
  18. #查看dcu_backup文件夹是否存在,如果存在则删除  
  19. if [ -e dcu_backup ]  
  20. then  
  21.     rm -rf dcu_backup  
  22.     echo "delete dcu_back_up"  
  23. fi  
  24.   
  25. #将当前dcu文件夹改名成dcu_backup  
  26. if [ -e dcu ]  
  27. then  
  28.     mv dcu dcu_backup  
  29.     echo "rename dcu to dcu_backup"  
  30. fi  
  31.   
  32. #升级文件放在dcu_update中,将dcu_update改名成dcu  
  33. if [ -e dcu_update ]  
  34. then  
  35.     mv dcu_update dcu  
  36.     echo "rename dcu_update to dcu"  
  37. else  
  38.     #如果dcu_update文件夹不存在,则将dcu_backup文件夹拷贝到dcu,启动里面的dcu程序  
  39.     cp -r dcu_backup dcu  
  40.     cd dcu  
  41.     ./dcu.bin &   #加"&",让dcu后台运行  
  42.     echo "start old dcu success"  
  43.     exit 0      #退出  
  44. fi  
  45.   
  46. #启动升级后的dcu  
  47. cd dcu  
  48. ./dcu.bin &    #加"&",让dcu后台运行  
  49. cd ..  
  50. echo "start new dcu success"  
  51.   
  52. #检查升级后的dcu是否正常启动,如果正常启动则生成一个标识升级成功的文件,退出  
  53. #如果没有检测到升级后的dcu进程,则删除当前dcu文件夹,拷贝备份程序为当前dcu  
  54. updatepid=`ps -ef |grep "dcu.bin" |grep -v "grep"|awk '{print $2}'`  
  55. if [ "$updatepid" = "" ]  
  56. then  
  57.     #没有检测到升级后的dcu进程  
  58.     rm -rf dcu  
  59.     cp -r dcu_backup dcu  
  60.     cd dcu  
  61.     ./dcu.bin &   #加"&",让dcu后台运行  
  62.     exit 0  
  63. else  
  64.     #升级成功,创建update_success空文件  
  65.     #dcu启动后检测时候有此文件,如果有,则发送升级成功消息,并删除此文件;如果没有,则发送升级失败消息  
  66.     touch update_success  
  67. fi 
自动升级脚本通常需要考虑以下几个方面: 1. 版本控制:需要确定当前的版本号以及最新的版本号,可以通过从远程仓库获取最新版本号并与本地版本号进行比较来实现。 2. 下载更新包:需要从远程仓库下载最新的更新包,并将其保存到本地。 3. 执行升级操作:需要对下载的更新包进行解压缩,并将其中的文件替换到相应的目录中。 下面是一个简单的自动升级脚本示例: ```bash #!/bin/bash REMOTE_REPO_URL="https://example.com/repo" LOCAL_VERSION="1.0" UPGRADE_DIR="/tmp/upgrade" UPGRADED_VERSION="" # 获取最新版本号 UPGRADED_VERSION=$(curl -s "${REMOTE_REPO_URL}/version.txt") # 如果最新版本号大于当前版本号,则下载更新包并执行升级操作 if [[ "${UPGRADED_VERSION}" > "${LOCAL_VERSION}" ]]; then # 创建升级目录 mkdir -p "${UPGRADE_DIR}" # 下载更新包并解压 curl -s "${REMOTE_REPO_URL}/update.tar.gz" | tar -xzf - -C "${UPGRADE_DIR}" # 执行升级操作 rsync -av "${UPGRADE_DIR}/" "/opt/myapp/" # 更新本地版本号 echo "${UPGRADED_VERSION}" > "/opt/myapp/version.txt" # 删除升级目录 rm -rf "${UPGRADE_DIR}" fi ``` 在上面的示例中,我们首先从远程仓库获取最新版本号,然后与本地版本号进行比较。如果最新版本号大于当前版本号,则下载更新包并执行升级操作。 下载更新包我们使用了 curl 命令和 tar 命令,将更新包下载到 /tmp/upgrade 目录中并解压缩。执行升级操作我们使用了 rsync 命令,将解压后的文件同步到 /opt/myapp 目录中。最后,我们更新了本地版本号并删除了升级目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值