【树莓派】【原】远程连接树莓派设备,以及进行远程应用更新与升级(新)
2023-09-11 14:21:32 时间
关于树莓派系列,在有空余的时间里面,我会把断断续续的工作中处理过的一些小的点记录一下,比较零散,但是是真实操作记录,或许对需要的朋友有点小的帮助。
树莓派系列参见这里:树莓派系列。
之前有写过一次远程更新树莓派的文章,当时脚本在测试环境调通了。参见 【树莓派】【原】远程连接树莓派设备,以及进行远程应用更新与升级
但是在生产环境测的时候,却发现不同环境还稍微有点小的问题。
因为之前旧的不同版本略有小的差异导致;之后经过优化,重新测试OK。
优化点主要是这两点,另外有点其他的小调整:
1.使用ln软连接方式,而不是mv版本号;
2.修改stop服务步骤,kill进程有效性;
在这里,重新补充一下最新的Scripts,如下:
boxagent@iZ2zeed4f6hbydt2078ddcZ:~$ cat boxrelease/script/upgrade_osprey.sh
#!/bin/sh #config APP_NAME=osprey USER_HOME=/home/lifeccp/webapp RELEASE_SRC="boxagent@smith.lifeccp.com:/home/boxagent/boxrelease/osprey/*.zip" #function say() { echo -e "[Osprey Deploy] $0: $1" } fetch_artifacts() { DEST="$USER_HOME/incoming/${APP_NAME}/" [ -d ${DEST} ] || mkdir -p ${DEST} say "Fetching artifacts from $ARTIFACTS_SRC to ${DEST}" scp ${RELEASE_SRC} ${DEST} say "Unzip the new war" cd ${DEST} && unzip -qo *.zip say "Change startup started" sed -i 8d ${USER_HOME}/${APP_NAME}/startup sed -i '8i MAIN_JAR=osprey.release.jar' ${USER_HOME}/${APP_NAME}/startup say "Change startup finished" if [ "$?" = "0" ]; then say "\033[32m -=Fetch artifacts finished=- \033[0m" else say "\033[31m -=Fetch artifacts failed=- \033[0m" exit 1 fi } stop_app() { say "Stopping [${APP_NAME}]" pkill -f ${APP_NAME} osprey_pid=$(pgrep -f ${APP_NAME}) if [ "${osprey_pid}" = "" ]; then say "\033[32m -=Stop ${APP_NAME} finished=- \033[0m" else say "\033[32m -=Stop ${APP_NAME} failed=- \033[0m" kill -9 "${osprey_pid}" kill -9 `ps aux | grep osprey | awk '{print $2}'` say "\033[32m -=Kill -9 ${APP_NAME}=- \033[0m" fi say "Stopping [${APP_NAME}] finished" } backup_app() { DEST="$USER_HOME/archive/${APP_NAME}$(date '+%Y%m%d%H%M')/" say "make backup dir ${DEST}" mkdir -p "${DEST}" cp -r ${USER_HOME}/${APP_NAME}/* ${DEST} say "\033[32m -=Backup ${APP_NAME} finished=- \033[0m" } deploy_app() { DEST="$USER_HOME/incoming/${APP_NAME}" say "Deploy ${APP_NAME}" say "Remove old app" rm -rf $USER_HOME/$APP_NAME/osprey*.release.jar rm -rf $USER_HOME/$APP_NAME/osprey*.release.jar.original say "Copying new app start" cp ${DEST}/osprey*.release.jar $USER_HOME/$APP_NAME/ cp ${DEST}/osprey*.release.jar.original $USER_HOME/$APP_NAME/ say "Copying new app finished" say "Make app link start" ln -s /home/lifeccp/webapp/osprey/osprey-*.release.jar /home/lifeccp/webapp/osprey/osprey.release.jar say "Make app link finished" if [ "$?" = "0" ]; then say "\033[32m -=Deploy ${APP_NAME} finished=- \033[0m" else say "\033[31m -=Deploy ${APP_NAME} failed=- \033[0m" exit 1 fi } clear() { say "clear $USER_HOME/incoming/${APP_NAME}/" rm -rf $USER_HOME/incoming/${APP_NAME}/* } start_app() { say "Start [${APP_NAME}]" sudo reboot if [ "$?" = "0" ]; then say "\033[32m -=Start reboot finished=- \033[0m" else say "\033[31m -=Start reboot failed=- \033[0m" exit 1 fi } publish() { say "********Step1 start..." fetch_artifacts say "********Step1 finished...\n\n********Step2 start..." stop_app say "********Step2 finished...\n\n********Step3 start..." backup_app say "********Step3 finished...\n\n********Step4 start..." deploy_app say "********Step4 finished...\n\n********Step5 start..." clear say "********Step5 finished...\n\n********Step6 start..." start_app say "********Step6 finished...Upgrade finished!" } #### do it ### publish
脚本使用方法:
1.使用ssh方式登录agent被控机;
2.执行如下命令;
scp boxagent@smith.lifeccp.com:/home/boxagent/boxrelease/script/upgrade_osprey.sh .
3.输入密码;
4.等待reboot;
升级完成之后,可以自己查看服务是否正常,一般情况下,没什么问题。
相关文章
- VMWare ESXi 开启显卡直通 (PCI 设备直通) 出现 DevicePowerOn 错误
- 嵌入式(驱动开发)(设备树)
- 搜索账号 排行榜客户端 2014全球可穿戴设备市场应用报告分析
- 网络医疗的进步让智能穿戴设备找到市场新蓝海
- 眼控技术应用于VR设备,就可以“用眼神打怪兽”
- 暗渡陈仓:用低消耗设备进行破解和渗透测试3.5 本章小结
- 物联网设备安全导读
- 教你如何集成HMS Nearby Service 实现智能设备间文件的高速、免流量传输!
- 《HTML5移动应用开发入门经典》—— 2.5 HTML5标签及属性对移动设备的支持
- 《PhoneGap移动应用开发手册》——1.5节获取设备位置传感器信息
- Qt编写安防视频监控系统61-子模块5设备控制
- SwiftUI CloudKit 入门之 11 在设备上处理记录并将更改保存到服务器
- linux driver --- platform框架应用完整实例(未使用设备树)
- 【SoC FPGA学习】十二、Linux 设备树的原理与编写I2C控制器应用实例
- 【正点原子MP157连载】第二十三章 Linux设备树-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
- 【正点原子Linux连载】第四十章 字符设备驱动开发 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
- 启扬数据采集传输设备解决方案,应用于污水监测等环保监测系统
- 应用到多场景的智能体检设备硬件解决方案
- 使用Kinect2作为Oculus游戏应用的输入设备
- Websphere设备、企业部署应用程序 【应用】
- 图尔克推行户RFID设备控制器TBEN-L-DCC,可进行数据控制
- /dev/null空字符设备文件
- 【树莓派】【原】远程连接树莓派设备,以及进行远程应用更新与升级
- 系统宕机:设备和应用不再是大问题,人为错误是关键
- 微软:Win10签名版设备可以安装Linux