基于shell脚本的软件包自动升级及软件自启功能

基于shell脚本的软件包自动升级及软件自启功能

简介

因需要,在Centos8中使用shell脚本实现软件包的自动升级。自动升级流程为:①上传软件压缩包至指定路径下②重启系统,软件包自动升级完成

rc.local文件

自动升级和软件自启的核心就是rc.local文件。rc.local文件位于/etc/rc.d。它是一个脚本,在系统启动过程的最后阶段被执行。这个文件通常用于在系统启动时自动执行命令或脚本。

我们先打开这个文件,然后向其中添加运行自动升级脚本的命令,使得自动升级脚本可以在系统启动时被执行。(脚本被放置在/etc/init.d/下,命名为upgrade.sh

sh /etc/init.d/upgrade.sh

然后确保其有运行权限,若发现无法实现开机自动执行的功能时,可以给rc.localupgrade.sh赋予相应的权限并重新尝试。

自动升级功能

为了直观的举例,现规定:

  • 软件安装包的命名为:InstallationPackage-20220411015810.tar.gz
  • 软件安装包解压出来就是一个/setup目录,里面包含了软件的所有相关内容。
  • 新软件安装包在上传时要上传到/setup路径下,以便更新。

下面介绍自动升级脚本的流程,它的本质就是检测指定目录下(/setup)是否有新的软件安装包,若有则进行升级:

  • ①根据名字检查/setup下的安装包是否存在且唯一,若存在且唯一则开始升级过程
  • ②删除/下的旧安装包,将新安装包移动至/,若移动成功则
  • ③删除旧软件及其相关内容所在的目录/setup
  • ④解压软件安装包,解压出新的软件目录/setup,并删除软件安装包
  • ⑤进入/setup执行目录内部的相关升级脚本

软件自启功能

软件自启功能很简单,只要在脚本中加入后台启动相关进程的语句即可

脚本代码

#!/bin/bash
#chkconfig: 2345 81 96
#description upgrade and start

touch /upgrade_monitor.log
LOG_FILE=/upgrade_monitor.log  

#日志记录函数   
function log() 
{  
    local t=$(date +"%F %X")  
    echo "[ $t ] $0 : $1 " >> ${LOG_FILE}  
}   

#启动进程,不包含在标准升级流程中,仅用于相关进程的开机自启  
function start() 
{  
    #设置环境变量,临时挂载硬盘等操作
    ...
    #后台启动相关进程,如守护进程
    cd /setup
    ./daemon &
    log ">>>>>>>>>>>>>>>>>>>>>>> exit aods "
    return 0
}

#软件包升级
function upgrade() 
{  
    #如果在更新目录下有安装包,则进行升级,否则正常启动,在升级完成后将安装包移动至/
    #安装目录/setup
    #安装包名字InstallationPackage-*tar.gz
    setup_num=$(ls -l /setup/ | grep -c InstallationPackage-)
    log $setup_num
	if [ $setup_num -eq 1 ]; then  
        log "find new upgrade file start upgrade"
		log "cd /"
	    cd /
		log "rm old InstallationPackage in /"
		rm /InstallationPackage-* -fr
		log "mv /setup/InstallationPackage- /"
        mv /setup/InstallationPackage-* /
		InstallationPackageIsVaild=$(ls -l / | grep -c InstallationPackage-)
		if [ $InstallationPackageIsVaild -eq 1 ]; then
		    log "find new upgrade file in / "
			log "start rm /setup* -fr /"
			rm /setup* -fr
			log "tar -zxvf /InstallationPackage-*"
			tar -zxvf /InstallationPackage-*
			log "rm /InstallationPackage-* -fr"
			rm /InstallationPackage-* -fr	
			log "cd /setup/"
			cd /setup/
			log "sh /setup/upgrade_setup.sh"
			sh /setup/upgrade_setup.sh
        fi			
    fi
	start
    return 0  
}

log ">>>>>>>>>>>>>>>>>>>>>>>> start aods !"
upgrade
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值