脚本的最大优势,就是简化工作步骤提高工作效率,你看出来了吗?有没有看到这段代码的作用呢?

下面这段代码,是为了提高刷机的生产效率!掌握基本的shell编程,很多事情都会变得如此的简单。

update.sh

#! /bin/sh 
set -x
echo "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 ];then
	echo "file exist.continue!!"
else
	echo "file not exist.exit!!!"
	exit 0
fi

PROCESS_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 ];then
	echo "Actually was runed upgrade.sh !!!!"
	exit 0
fi

NAME=main.V5.1.4.exe

if [ $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_ID
kill -9 $main_ID  
echo "kill main_ID done!!!"  
echo "---------------"   

daemon_ID=`ps | grep "daemon.exe" | grep -v "grep" | awk '{print $1}'`  
echo $daemon_ID
kill -9 $daemon_ID  
echo "kill daemon_ID done!!!"  
echo "---------------" 
   
udhcpc_ID=`ps | grep "udhcpc" | grep -v "grep" | awk '{print $1}'`  
echo $udhcpc_ID
kill -9 $udhcpc_ID  
echo "kill udhcpc_ID done!!!"  
echo "---------------"   

echo close watchdog ...
cp /mnt/sd_card/aoni_update/close_watchdog /tmp
cp /mnt/sd_card/aoni_update/gm_led /tmp
cd /tmp
./close_watchdog &

if [ $? -eq 0 ];then

	echo umount /mnt/mtd
	umount /mnt/mtd
	if [ $? -eq 0 ];then
		echo "umount /mnt/mtd done!"

		flash_eraseall /dev/mtd4
    	
		if [ $? -eq 0 ];then
			echo "flash_eraseall done!"
        
			flashcp /mnt/sd_card/aoni_update/app_5.1.6.jffs2 /dev/mtd4
			if [ $? -eq 0 ];then
				echo "flashcp done!"
				echo "sync ..."
				sync
				echo "uptade success!!"
				if [ $? -eq 0 ];then
					./gm_led &
				fi
			fi
		fi
	fi

fi


另外补充一个问题就是关于看门狗的,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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编写Linux巡检脚本可以大大简化系统巡检的流程,提高工作效率。下面我将介绍一下使用Python编写Linux巡检脚本的基本步骤: 1. 编写脚本头 在脚本文件的第一行添加以下内容: ``` #!/usr/bin/env python ``` 这个头告诉操作系统这是一个Python脚本文件,并且使用系统中安装的Python解释器运行它。 2. 导入需要使用的模块 巡检脚本需要使用一些模块来获取系统信息和执行命令。这些模块包括: - os:用于执行系统命令和获取系统信息。 - sys:用于获取命令行参数。 - datetime:用于获取当前时间。 在脚本文件的开头添加以下内容: ``` import os import sys import datetime ``` 3. 编写主函数 在脚本文件中编写一个主函数,用于执行巡检任务。函数中可以调用os模块的函数执行系统命令,获取系统信息。比如: ``` def main(): # 获取系统的主机名 hostname = os.popen('hostname').read().strip() print('Hostname: %s' % hostname) # 获取系统的CPU信息 cpu_info = os.popen('cat /proc/cpuinfo').read().strip() print('CPU Info: %s' % cpu_info) # 获取系统的内存信息 mem_info = os.popen('cat /proc/meminfo').read().strip() print('Memory Info: %s' % mem_info) # 获取系统的磁盘使用情况 disk_usage = os.popen('df -h').read().strip() print('Disk Usage: %s' % disk_usage) # 获取系统的网络连接状态 netstat = os.popen('netstat -an').read().strip() print('Netstat: %s' % netstat) ``` 4. 调用主函数 在脚本文件的最后添加以下内容: ``` if __name__ == '__main__': main() ``` 这段代码作用是判断当前文件是否为主文件,如果是则执行main()函数。 5. 运行脚本脚本文件保存为一个.py文件,并赋予执行权限。然后在命令行中执行该文件即可。 ``` chmod +x check_system.py ./check_system.py ``` 以上就是使用Python编写Linux巡检脚本的基本步骤。根据实际需求,可以添加更多的系统巡检任务和功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值