脚本的最大优势,就是简化工作步骤提高工作效率,你看出来了吗?有没有看到这段代码的作用呢?
来源:互联网 发布:学java入门什么书推建 编辑:程序博客网 时间:2024/05/17 18:41
下面这段代码,是为了提高刷机的生产效率!掌握基本的shell编程,很多事情都会变得如此的简单。
update.sh
#! /bin/sh set -xecho "start update ..." if [ -f /mnt/sd_card/aoni_update/app_5.1.6.jffs2 ] && [ -f /mnt/sd_card/aoni_update/close_watchdog ] && [ -f /mnt/sd_card/aoni_update/gm_led ];thenecho "file exist.continue!!"elseecho "file not exist.exit!!!"exit 0fiPROCESS_NUM_1=`ps | grep "main.V5.1.4.exe" | grep -v "grep" | wc -l` PROCESS_NUM_2=`ps | grep "main.V5.1.5.exe" | grep -v "grep" | wc -l` PROCESS_NUM_3=`ps | grep "main.V5.1.6.exe" | grep -v "grep" | wc -l`PROCESS_watchdog=`ps | grep "close_watchdog" | grep -v "grep" | wc -l`if [ $PROCESS_watchdog -eq 1 ];thenecho "Actually was runed upgrade.sh !!!!"exit 0fiNAME=main.V5.1.4.exeif [ $PROCESS_NUM_1 -eq 1 ]; then NAME=main.V5.1.4.exe fi if [ $PROCESS_NUM_2 -eq 1 ]; then NAME=main.V5.1.5.exe fi if [ $PROCESS_NUM_3 -eq 1 ]; then NAME=main.V5.1.6.exe fi main_ID=`ps | grep "$NAME" | grep -v "grep" | awk '{print $1}'` echo $main_IDkill -9 $main_ID echo "kill main_ID done!!!" echo "---------------" daemon_ID=`ps | grep "daemon.exe" | grep -v "grep" | awk '{print $1}'` echo $daemon_IDkill -9 $daemon_ID echo "kill daemon_ID done!!!" echo "---------------" udhcpc_ID=`ps | grep "udhcpc" | grep -v "grep" | awk '{print $1}'` echo $udhcpc_IDkill -9 $udhcpc_ID echo "kill udhcpc_ID done!!!" echo "---------------" echo close watchdog ...cp /mnt/sd_card/aoni_update/close_watchdog /tmpcp /mnt/sd_card/aoni_update/gm_led /tmpcd /tmp./close_watchdog &if [ $? -eq 0 ];thenecho umount /mnt/mtdumount /mnt/mtdif [ $? -eq 0 ];thenecho "umount /mnt/mtd done!"flash_eraseall /dev/mtd4 if [ $? -eq 0 ];thenecho "flash_eraseall done!" flashcp /mnt/sd_card/aoni_update/app_5.1.6.jffs2 /dev/mtd4if [ $? -eq 0 ];thenecho "flashcp done!"echo "sync ..."syncecho "uptade success!!"if [ $? -eq 0 ];then./gm_led &fififififi
另外补充一个问题就是关于看门狗的,umount分区之前,必须先kill掉存在该分区的进程,但是由于启用了看门狗,如果直接kill线程,看门狗就会一直重启系统而无法正常工作,首先第一想法是直接强制关闭,尝试了命令和程序貌似不太好使,干脆!直接不停的喂狗!代码如下:
close_watchdog.c
#include <fcntl.h>#include <errno.h>#include <sys/ioctl.h>#include <linux/watchdog.h>#define TIMEOUT 10#define WDT_DEVICE_FILE "/dev/watchdog"int main(void){ int g_watchdog_fd = -1; int timeout = 0; char arg = 1; g_watchdog_fd = open(WDT_DEVICE_FILE, O_RDWR); if (!g_watchdog_fd) { printf("Error in file open WDT device file(%s)...\n", WDT_DEVICE_FILE); return 0; } ioctl(g_watchdog_fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);#if 1 ioctl(g_watchdog_fd, WDIOC_GETTIMEOUT, &timeout); printf("default timeout %d sec.\n", timeout); printf("We reset timeout as %d sec.\n", TIMEOUT); timeout = TIMEOUT; ioctl(g_watchdog_fd, WDIOC_SETTIMEOUT, &timeout); ioctl(g_watchdog_fd, WDIOC_GETTIMEOUT, &timeout); if (timeout != TIMEOUT) { printf("WDT timeout reset error.\n"); return 1; } while (1) { write(g_watchdog_fd, &arg, sizeof(arg)); ioctl(g_watchdog_fd, WDIOC_KEEPALIVE, 0); sleep(2); }#endif ioctl(g_watchdog_fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD); close(g_watchdog_fd); printf("watchdog_disable_dog!!!\n"); return 0;}
阅读全文
0 0
- 脚本的最大优势,就是简化工作步骤提高工作效率,你看出来了吗?有没有看到这段代码的作用呢?
- 这样的递归调用,你看出来了?
- 为什么上面这段代码没有直接写的 function add (){...} 而是把function赋值给了变量add呢?
- 代码生成器,极大简化你的工作
- 有时候当我们打开excel,没有看到常规的显示工作表界面,而是只显示了用户窗体。这是怎么实现的呢?
- 你看到我看到的了吗?
- 休闲娱乐_(我看出来了,你可以吗)(测试你的左脑和右脑)
- 用脚本来简化iOS美术同学的工作
- 用脚本来简化iOS美术同学的工作
- 14个开源项目,你看出来了吗?
- 好Cool的相册!不知道大家有没有看到左侧的相片夹呢
- 看到你来了
- 代码不是看出来的而是调出来的
- 考考你,能看出这一段代码是用哪个编程语言写的吗?
- 使用Java注解来简化你的代码
- 使用Java注解来简化你的代码
- 你是否真正理解了protected的作用范围呢?
- 你是否真正理解了protected的作用范围呢?
- Iphone隐藏和显示TabBar的方法
- 简单介绍浏览器端的几种存储技术
- 查找兄弟单词
- 最大子数组和算法(Java实现)
- oracle chr()(附常用字符与ascii对照表)
- 脚本的最大优势,就是简化工作步骤提高工作效率,你看出来了吗?有没有看到这段代码的作用呢?
- 【OpenGL】安装配置
- nio按行读文件
- ButterKnife 8.2.1的使用
- IOS隐藏tabbar
- C++数据结构与算法——麻将胡牌算法(二:完全胡牌算法)
- 函数顺序点分析和可变参数函数
- 第一个Shell脚本
- 差生学什么?