1.     如果有大电容,检测到断电后先做dismount,然后再走标准关机流程。

#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

mount -o remount,ro /
umount -f -a -r > /dev/null 2>&1
    fp = popen("ps -e | grep \'app\' | awk \'{print $1}\'", "r");
    va = fgets(buffer, sizeof(buffer), fp);
    pclose(fp);

    if (va == NULL){
        printf("GET PID ERROR\n");
    } else {
        printf("GET PID : %s\n", buffer);
        pid = atoi(buffer);
        printf("pid : %d\n", pid);

        kill(pid, SIGUSR1);
        printf("-Send signal to app---\n");
	    usleep(1000000);
    }

    kill(-1, SIGKILL);

    usleep(10000);
    sync();

    system("umountall.sh");
    reboot(RB_POWER_OFF);

    while (1)
        usleep(10000000);

2.     把rootfs做成只读的,单独开个需要写的分区。开机后对这个分区做fsck。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐