KoolShare

 找回密码
 立即注册
搜索
查看: 2215|回复: 3

[其他插件] 【已解决】与 @Jack- 讨论开机脚本的问题

[复制链接]

24

主题

4072

帖子

2943

积分

初级魔导师

空浪

Rank: 6Rank: 6

精华
0
门户文章
0
魔力币
1882
魔法值
0
注册时间
2015-10-9
发表于 2017-5-25 09:46:35 | 显示全部楼层 |阅读模式
本帖最后由 konglang_616 于 2017-5-26 21:01 编辑

华硕路由器官方固件开机自动运行脚本方法
https://koolshare.cn/thread-105955-1-1.html
(出处: KoolShare)




@Jack- 讨论了开机脚本的一些问题
他原话如下


这个适合官方固件,刷梅林就有更好地手段使用脚本,无需那么复杂。不过您的建议我会考虑,目前我还需要对脚本进行调试,待调试完成,我会考虑写篇教程。
如果您愿意帮助我,希望您能解释下这个脚本每行的含义,我有很多不懂,而这个脚本是开机启动的关键:
  1. #!/bin/sh
  2. # ASUS app autorun script
  3. # $1: device name, $2: mounted path.


  4. nvram set apps_state_autorun=0 # INITIALIZING
  5. nvram set apps_state_error=0
  6. APPS_INSTALL_FOLDER=`nvram get apps_install_folder`
  7. SWAP_ENABLE=`nvram get apps_swap_enable`
  8. SWAP_THRESHOLD=`nvram get apps_swap_threshold`
  9. SWAP_FILE=`nvram get apps_swap_file`
  10. SWAP_SIZE=`nvram get apps_swap_size`
  11. APPS_PATH=/opt
  12. PATH=$APPS_PATH/usr/bin:$APPS_PATH/bin:$APPS_PATH/usr/sbin:$APPS_PATH/sbin:/usr/bin:/bin:/usr/sbin:/sbin
  13. unset LD_LIBRARY_PATH
  14. unset LD_PRELOAD


  15. if [ -n "$1" ] && [ -n "$2" ];then
  16.          APPS_DEV=$1
  17.          APPS_MOUNTED_PATH=$2
  18.          nvram set apps_dev=
  19.          nvram set apps_mounted_path=
  20. fi

  21. original_apps_mounted_path=`nvram get apps_mounted_path`
  22. if [ -n "$APPS_DEV" ] && [ -n "$APPS_MOUNTED_PATH" ] && [ -z "$original_apps_mounted_path" ]; then
  23.          nvram set apps_dev=$APPS_DEV
  24.          nvram set apps_mounted_path=$APPS_MOUNTED_PATH
  25. else
  26.          nvram set apps_state_error=1
  27.          exit 1
  28. fi

  29. APPS_INSTALL_PATH=$APPS_MOUNTED_PATH/$APPS_INSTALL_FOLDER

  30. i=0
  31. while [ $i -le 20 ]; do
  32.          success_start_service=`nvram get success_start_service`
  33.          if [ "$success_start_service" == "1" ]; then
  34.                  break
  35.          fi

  36.          i=$((i+1))
  37.          echo "autorun APP: wait $i seconds..."
  38.          sleep 1
  39. done


  40. nvram set apps_state_autorun=1 # CHECKING_POOL
  41. APPS_MOUNTED_TYPE=`mount |grep "/dev/$APPS_DEV on " |awk '{print $5}'`
  42. if [ "$APPS_MOUNTED_TYPE" == "vfat" ] || [ "$APPS_MOUNTED_TYPE" == "tfat" ]; then
  43.          link_ready=`app_check_pool.sh $APPS_DEV`
  44.          if [ "$link_ready" == "Non-linked" ]; then
  45.                  echo "Building the link of $APPS_MOUNTED_PATH."
  46.                  app_base_link.sh
  47.                  if [ "$?" != "0" ]; then
  48.                          # apps_state_error was already set by app_base_link.sh.
  49.                          exit 1
  50.                  fi
  51.          elif [ "$link_ready" == "linked" ]; then
  52.                  echo "Had already built the link of $APPS_MOUNTED_PATH."
  53.          elif [ "$link_ready" == "Non-mounted" ]; then
  54.                  echo "Had not mounted yet!"
  55.                  nvram set apps_state_error=2
  56.                  exit 1
  57.          else
  58.                  echo "Invalid input of the mounted path!"
  59.                  nvram set apps_state_error=1
  60.                  exit 1
  61.          fi
  62. else
  63.          echo "Building the link of $APPS_MOUNTED_PATH."
  64.          app_base_link.sh
  65.          if [ "$?" != "0" ]; then
  66.                  # apps_state_error was already set by app_base_link.sh.
  67.                  exit 1
  68.          fi
  69. fi


  70. nvram set apps_state_autorun=2 # CREATING_SWAP
  71. if [ "$SWAP_ENABLE" != "1" ]; then
  72.          echo "Disable to swap!"
  73. else
  74.          mem_size=`free |sed '1,3d' |awk '{print $4}'`
  75.          if [ "$SWAP_THRESHOLD" == "" ] || [ $mem_size -lt $SWAP_THRESHOLD ]; then
  76.                  pool_size=`df /dev/$APPS_DEV |sed '1d' |awk '{print $4}'`
  77.                  if [ $pool_size -gt $SWAP_SIZE ]; then
  78.                          if [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ]; then
  79.                                  swapoff $APPS_INSTALL_PATH/$SWAP_FILE
  80.                                  rm -rf $APPS_INSTALL_PATH/$SWAP_FILE
  81.                          fi

  82.                          swap_count=`expr $SWAP_SIZE / 1000 - 1`
  83.                          echo "dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count"
  84.                          dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count
  85.                          echo "mkswap $APPS_INSTALL_PATH/$SWAP_FILE"
  86.                          mkswap $APPS_INSTALL_PATH/$SWAP_FILE
  87.                          echo "swapon $APPS_INSTALL_PATH/$SWAP_FILE"
  88.                          swapon $APPS_INSTALL_PATH/$SWAP_FILE
  89.                  else
  90.                          echo "No enough partition size!"
  91.                          nvram set apps_state_error=3
  92.                          exit 1
  93.                  fi
  94.          fi
  95. fi


  96. nvram set apps_state_autorun=3 # EXECUTING
  97. link_internet=`nvram get link_internet`
  98. if [ "$link_internet" == "2" ]; then
  99.          app_update.sh &
  100. fi

  101. # run all APPs by order.
  102. app_init_run.sh allpkg start


  103. nvram set apps_state_autorun=4 # FINISHED
复制代码


我也是半把刀子而已
希望大神们帮忙看看

评分

2

查看全部评分

24

主题

4072

帖子

2943

积分

初级魔导师

空浪

Rank: 6Rank: 6

精华
0
门户文章
0
魔力币
1882
魔法值
0
注册时间
2015-10-9
 楼主| 发表于 2017-5-25 09:46:55 | 显示全部楼层
本帖最后由 konglang_616 于 2017-5-25 13:03 编辑
  1. #!/bin/sh
  2. # ASUS app autorun script
  3. # 华硕应用自动运行脚本
  4. # $1: device name, $2: mounted path.
  5. # $1: 设备名称, $2: 安装路径.

  6. # INITIALIZING
  7. #初始化
  8. nvram set apps_state_autorun=0 #赋值nvram的apps_state_autorun(应用状态自动启动)为0
  9. nvram set apps_state_error=0 #赋值nvram的apps_state_error(应用状态错误)为0
  10. APPS_INSTALL_FOLDER=`nvram get apps_install_folder` #将APPS_INSTALL_FOLDER(安装文件夹)赋值为nvram中的apps_install_folder(应用安装文件夹)
  11. #获取虚拟内存状态
  12. SWAP_ENABLE=`nvram get apps_swap_enable`
  13. SWAP_THRESHOLD=`nvram get apps_swap_threshold`
  14. SWAP_FILE=`nvram get apps_swap_file`
  15. SWAP_SIZE=`nvram get apps_swap_size`
  16. APPS_PATH=/opt #设置应用路径
  17. PATH=$APPS_PATH/usr/bin:$APPS_PATH/bin:$APPS_PATH/usr/sbin:$APPS_PATH/sbin:/usr/bin:/bin:/usr/sbin:/sbin #设置变量路径
  18. #删除环境变量
  19. unset LD_LIBRARY_PATH
  20. unset LD_PRELOAD

  21. #判断设备名称和安装路径是否为空,都不为空则执行then。
  22. if [ -n "$1" ] && [ -n "$2" ];then
  23.         APPS_DEV=$1 #设备名称赋值至APPS_DEV
  24.         APPS_MOUNTED_PATH=$2 #安装路径赋值至APPS_MOUNTED_PATH
  25.         nvram set apps_dev= #赋值nvram中apps_dev为空
  26.         nvram set apps_mounted_path= #赋值nvram中的apps_mounted_path为空
  27.         #这个变量赋值为空后下面的语句就能把original_apps_mounted_path赋值为空,则可影响if [ -n "$APPS_DEV" ] && [ -n "$APPS_MOUNTED_PATH" ] && [ -z "$original_apps_mounted_path" ]语句,不至判断直接跳转至else导致apps_state_error为1并结束进程。
  28. fi
  29. original_apps_mounted_path=`nvram get apps_mounted_path` #original_apps_mounted_path(原始应用安装路径)为获取nvram中的应用安装路径
  30. #判断APPS_DEV非空且APPS_MOUNTED_PATH非空且original_apps_mounted_path为空时执行then,否则执行else
  31. if [ -n "$APPS_DEV" ] && [ -n "$APPS_MOUNTED_PATH" ] && [ -z "$original_apps_mounted_path" ]; then
  32.         nvram set apps_dev=$APPS_DEV #设备名称赋值至nvram的apps_dev
  33.         nvram set apps_mounted_path=$APPS_MOUNTED_PATH #安装路径赋值至nvram的apps_mounted_path
  34. else
  35.         nvram set apps_state_error=1 #赋值nvram中的apps_state_error(应用状态错误)为1,初始化时值是为0的。
  36.         exit 1 #整个进程结束,并表示异常进程结果。
  37. fi
  38. APPS_INSTALL_PATH=$APPS_MOUNTED_PATH/$APPS_INSTALL_FOLDER #赋值具体应用安装路径和文件夹
  39. i=0 #设置i为初始值
  40. while [ $i -le 20 ]; do #i小于等于20时怎执行循环
  41.         success_start_service=`nvram get success_start_service` #success_start_service(成功开启服务)赋值为nvram中的success_start_service
  42.         if [ "$success_start_service" == "1" ]; then #如果success_start_service为1则中断,直接跳出循环,如不为1则i不停+1,直到i为20终止循环。
  43.                 break
  44.         fi
  45.          i=$((i+1)) #i赋值为i+1
  46.         echo "autorun APP: wait $i seconds..." #显示“自动运行应用:请等待 i 秒……”
  47.         sleep 1
  48. done #与while对应的循环终止语句


  49. # CHECKING_POOL
  50. #检查池状态
  51. nvram set apps_state_autorun=1 #将nvram中的apps_state_autorun(应用状态自动启动)设置为1,初始化时值是为0的。
  52. APPS_MOUNTED_TYPE=`mount |grep "/dev/$APPS_DEV on " |awk '{print $5}'` #获取挂载U盘的模式(猜测)并赋值给APPS_MOUNTED_TYPE(应用安装的模式)
  53. if [ "$APPS_MOUNTED_TYPE" == "vfat" ] || [ "$APPS_MOUNTED_TYPE" == "tfat" ]; then #判断APPS_MOUNTED_TYPE等于vfat或tfat则执行then,否则执行else
  54.         link_ready=`app_check_pool.sh $APPS_DEV` #link_ready赋值为运行app_check_pool.sh脚本对应的设备值
  55.         if [ "$link_ready" == "Non-linked" ]; then #如果link_ready为Non-linked
  56.                 echo "Building the link of $APPS_MOUNTED_PATH." #显示“正在创建的路径链接为$APPS_MOUNTED_PATH。”
  57.                 app_base_link.sh #执行app_base_link.sh脚本
  58.                 if [ "$?" != "0" ]; then #如果$?不为0,“?”应该是通配符,$?可能是app_base_link.sh脚本传递过来的值。
  59.                         # apps_state_error was already set by app_base_link.sh. #apps_state_error已经在app_base_link.sh脚本中赋值,应该会赋值为非0。
  60.                         exit 1 #整个进程结束,并表示异常进程结果。
  61.                 fi
  62.         elif [ "$link_ready" == "linked" ]; then #如果link_ready为linked
  63.                 echo "Had already built the link of $APPS_MOUNTED_PATH." #显示“已创建路径链接为$APPS_MOUNTED_PATH。”
  64.         elif [ "$link_ready" == "Non-mounted" ]; then #如果link_ready为Non-mounted
  65.                 echo "Had not mounted yet!" #显示“还不能挂载!”
  66.                 nvram set apps_state_error=2 #赋值nvram中的apps_state_error(应用状态错误)为2
  67.                 exit 1 #整个进程结束,并表示异常进程结果。
  68.         else #判断link_ready的值为其他情况,即非Non-linked、linked和Non-mounted
  69.                 echo "Invalid input of the mounted path!" #显示“挂载路径无效!”
  70.                 nvram set apps_state_error=1 #赋值nvram中的apps_state_error(应用状态错误)为1
  71.                 exit 1 #整个进程结束,并表示异常进程结果。
  72.         fi
  73. else #APPS_MOUNTED_TYPE不等于vfat或tfat时执行
  74.         echo "Building the link of $APPS_MOUNTED_PATH." #显示“正在创建的路径链接为$APPS_MOUNTED_PATH。”
  75.         app_base_link.sh #执行app_base_link.sh脚本
  76.         if [ "$?" != "0" ]; then #如果$?不为0,“?”应该是通配符,$?可能是app_base_link.sh脚本传递过来的值。
  77.                 # apps_state_error was already set by app_base_link.sh. #apps_state_error已经在app_base_link.sh脚本中赋值,应该会赋值为非0。
  78.                 exit 1 #整个进程结束,并表示异常进程结果。
  79.         fi
  80. fi

  81. # CREATING_SWAP
  82. #创建虚拟内存
  83. nvram set apps_state_autorun=2 #将nvram中的apps_state_autorun(应用状态自动启动)设置为2
  84. if [ "$SWAP_ENABLE" != "1" ]; then #如果SWAP_ENABLE值不为1时执行then,否则执行else。(SWAP_ENABLE的值初始化时已经赋值了)
  85.         echo "Disable to swap!" #显示“虚拟内存关闭!”
  86. else #SWAP_ENABLE为1时执行
  87.         mem_size=`free |sed '1,3d' |awk '{print $4}'` #赋值内存大小
  88.         if [ "$SWAP_THRESHOLD" == "" ] || [ $mem_size -lt $SWAP_THRESHOLD ]; then #如果SWAP_THRESHOLD(虚拟内存阀值)为空或者内存大小小于
  89.                 pool_size=`df /dev/$APPS_DEV |sed '1d' |awk '{print $4}'` #赋值池大小
  90.                 if [ $pool_size -gt $SWAP_SIZE ]; then #如果池大小大于虚拟内存大小
  91.                         if [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ]; then #如果$APPS_INSTALL_PATH/$SWAP_FILE文件夹存在
  92.                                 swapoff $APPS_INSTALL_PATH/$SWAP_FILE #关闭交换分区$APPS_INSTALL_PATH/$SWAP_FILE
  93.                                 rm -rf $APPS_INSTALL_PATH/$SWAP_FILE #强制删除$APPS_INSTALL_PATH/$SWAP_FILE目录
  94.                         fi
  95.                          swap_count=`expr $SWAP_SIZE / 1000 - 1` #赋值虚拟内存计数
  96.                         echo "dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count" #显示输出
  97.                         dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count #执行命令
  98.                         echo "mkswap $APPS_INSTALL_PATH/$SWAP_FILE" #显示输出
  99.                         mkswap $APPS_INSTALL_PATH/$SWAP_FILE #设置交换区
  100.                         echo "swapon $APPS_INSTALL_PATH/$SWAP_FILE" #显示输出
  101.                         swapon $APPS_INSTALL_PATH/$SWAP_FILE #激活交换空间
  102.                 else #如果池大小小于等于虚拟内存大小
  103.                         echo "No enough partition size!" #显示“分区空间不足!”
  104.                         nvram set apps_state_error=3 #赋值nvram中的apps_state_error(应用状态错误)为3
  105.                         exit 1 #整个进程结束,并表示异常进程结果。
  106.                 fi
  107.         fi
  108. fi

  109. # EXECUTING
  110. #执行
  111. nvram set apps_state_autorun=3 #将nvram中的apps_state_autorun(应用状态自动启动)设置为3
  112. link_internet=`nvram get link_internet` #link_internet(连接互联网)赋值为至nvram的link_internet
  113. if [ "$link_internet" == "2" ]; then #如果link_internet的值为2则执行app_update.sh脚本,这里应该是判断是否连网。
  114.         app_update.sh & #执行app_update.sh脚本
  115. fi
  116. # run all APPs by order.
  117. #按顺序运行所有应用程序
  118. app_init_run.sh allpkg start #执行脚本

  119. nvram set apps_state_autorun=4 #将nvram中的apps_state_autorun(应用状态自动启动)设置为4
  120. # FINISHED
  121. #结束
复制代码


参考内容
华硕官固的脚本,安装下载大师之后找到的
http://www.right.com.cn/forum/thread-83749-1-1.html
(出处: 恩山无线论坛)

【虚拟内存】为路由器增加虚拟内存 SWAP(更新脚本)
https://koolshare.cn/thread-37494-1-1.html
(出处: KoolShare)

【进阶类教程】为路由器梅林固件增加虚拟内存  补图
https://koolshare.cn/thread-42723-1-1.html
(出处: KoolShare)

Linux 中环境变量设置
http://www.cnblogs.com/xiehongfeng100/p/4969477.html

LD_PRELOAD的偷梁换柱之能
http://www.cnblogs.com/net66/p/5609026.html

linux里while [-n "$1"]这里的-n是什么意思?
https://zhidao.baidu.com/question/1174241952053360539.html

Shell if...fi语句
http://www.yiibai.com/shell/if-fi-statement.html

嵌入式 shell中的if……fi用法
http://blog.sina.com.cn/s/blog_8795b0970101dhyo.html

shell编程——if语句 if -z -n -f -eq -ne -lt
http://www.cnblogs.com/myitm/archive/2012/07/05/2577416.html

mount_百度百科
http://baike.baidu.com/item/mount

GREP_百度百科
http://baike.baidu.com/item/GREP

Awk_百度百科
http://baike.baidu.com/item/Awk

Linux swapoff命令 | 菜鸟教程
http://www.runoob.com/linux/linux-comm-swapoff.html

Linux rm命令 | 菜鸟教程
http://www.runoob.com/linux/linux-comm-rm.html

Linux mkswap命令 | 菜鸟教程
http://www.runoob.com/linux/linux-comm-mkswap.html

Linux swapon命令 | 菜鸟教程
http://www.runoob.com/linux/linux-comm-swapon.html

@bbis

评分

1

查看全部评分

32

主题

420

帖子

837

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
658
魔法值
0
注册时间
2016-2-15

DDOS纪念勋章

发表于 2017-5-25 11:11:10 | 显示全部楼层
本帖最后由 lcy630409 于 2017-5-25 11:39 编辑


小白来注释一下

  1. #!/bin/sh   
  2. # ASUS app autorun script    这里都是注释  第一行代表着 使用/bin目录下的sh执行这个文件
  3. # $1: device name, $2: mounted path.


  4. nvram set apps_state_autorun=0 # INITIALIZING    #设置apps_state_autorun等于0
  5. nvram set apps_state_error=0      #设置apps_state_error等于0
  6. APPS_INSTALL_FOLDER=`nvram get apps_install_folder`   #定义变量
  7. SWAP_ENABLE=`nvram get apps_swap_enable`                         #定义变量
  8. SWAP_THRESHOLD=`nvram get apps_swap_threshold`                        #定义变量
  9. SWAP_FILE=`nvram get apps_swap_file`                                        #定义变量
  10. SWAP_SIZE=`nvram get apps_swap_size`                                        #定义变量
  11. APPS_PATH=/opt                                                          #定义变量
  12. PATH=$APPS_PATH/usr/bin:$APPS_PATH/bin:$APPS_PATH/usr/sbin:$APPS_PATH/sbin:/usr/bin:/bin:/usr/sbin:/sbin   #定义变量
  13. unset LD_LIBRARY_PATH        #销毁变量
  14. unset LD_PRELOAD                #销毁变量


  15. if [ -n "$1" ] && [ -n "$2" ];then   #这里的$1 $2 可能还有$3 $4...  $X  这个X就是运行这个sh的时候传入的参数  比如这个sh叫a.sh 运行的时候./a.sh 11 35 66  那么$1=11 $2=35 $3=66
  16.          APPS_DEV=$1   #赋值变量
  17.          APPS_MOUNTED_PATH=$2  #赋值变量
  18.          nvram set apps_dev=  #赋值变量
  19.          nvram set apps_mounted_path=  #赋值变量
  20. fi  #结束if

  21. original_apps_mounted_path=`nvram get apps_mounted_path`  #定义变量
  22. if [ -n "$APPS_DEV" ] && [ -n "$APPS_MOUNTED_PATH" ] && [ -z "$original_apps_mounted_path" ]; then  #如果$APPS_DEV不为空,而且$APPS_MOUNTED_PATH为空就执行
  23.          nvram set apps_dev=$APPS_DEV   #赋值
  24.          nvram set apps_mounted_path=$APPS_MOUNTED_PATH        #赋值
  25. else   #如果上面的条件有一个不为真就执行
  26.          nvram set apps_state_error=1  #赋值
  27.          exit 1        #退出
  28. fi

  29. APPS_INSTALL_PATH=$APPS_MOUNTED_PATH/$APPS_INSTALL_FOLDER  #赋值

  30. i=0  #定义变量
  31. while [ $i -le 20 ]; do  #循环,如果i小雨等于20 就执行
  32.          success_start_service=`nvram get success_start_service`  #赋值
  33.          if [ "$success_start_service" == "1" ]; then  #如果success_start_service=1,即执行了nvram get success_start_service的结果为1就执行
  34.                  break   #跳出循环 ,到这里就不再循环了
  35.          fi  

  36.          i=$((i+1))  #i=i+1
  37.          echo "autorun APP: wait $i seconds..."  #输出 字符串
  38.          sleep 1   #等待一秒后  继续执行
  39. done   #循环闭包


  40. nvram set apps_state_autorun=1 # CHECKING_POOL     赋值
  41. APPS_MOUNTED_TYPE=`mount |grep "/dev/$APPS_DEV on " |awk '{print $5}'`  #赋值
  42. if [ "$APPS_MOUNTED_TYPE" == "vfat" ] || [ "$APPS_MOUNTED_TYPE" == "tfat" ]; then #如果条件一 “或者”条件二  有一个为真  就执行
  43.          link_ready=`app_check_pool.sh $APPS_DEV`                #赋值
  44.          if [ "$link_ready" == "Non-linked" ]; then                #执行app_check_pool.sh $APPS_DEV  如果返回值==“Non-linked”就执行下面的
  45.                  echo "Building the link of $APPS_MOUNTED_PATH."  #输出
  46.                  app_base_link.sh                #执行
  47.                  if [ "$?" != "0" ]; then  #如果上面的app_base_link.sh执行结果不等于0就执行
  48.                          # apps_state_error was already set by app_base_link.sh.
  49.                          exit 1   #退出  输出1
  50.                  fi
  51.          elif [ "$link_ready" == "linked" ]; then   #如果上面的...执行结果等于linked就执行
  52.                  echo "Had already built the link of $APPS_MOUNTED_PATH."  #输出
  53.          elif [ "$link_ready" == "Non-mounted" ]; then   #如果上面的...执行结果等于Non-mounted就执行
  54.                  echo "Had not mounted yet!"  #输出
  55.                  nvram set apps_state_error=2  #设置变量
  56.                  exit 1  #退出 输出1
  57.          else  #如果上面的....执行结果不等于上面所有的Non-linked或linked或Non-mounted  就执行
  58.                  echo "Invalid input of the mounted path!"  #输出
  59.                  nvram set apps_state_error=1  #设置变量
  60.                  exit 1  #退出 输出1
  61.          fi
  62. else  #如果条件一 “或者”条件二  都为假  就执行
  63.          echo "Building the link of $APPS_MOUNTED_PATH."  #输出
  64.          app_base_link.sh  #执行
  65.          if [ "$?" != "0" ]; then  #上面的执行结果不等于0就执行
  66.                  # apps_state_error was already set by app_base_link.sh.
  67.                  exit 1   #退出 输出1
  68.          fi
  69. fi


  70. nvram set apps_state_autorun=2 # CREATING_SWAP  设置变量
  71. if [ "$SWAP_ENABLE" != "1" ]; then   #执行nvram get apps_swap_enable的结果不等于1  就执行
  72.          echo "Disable to swap!"  #输出
  73. else  #等于1  就执行
  74.          mem_size=`free |sed '1,3d' |awk '{print $4}'`  #获取语句的结果  结果是多少  自己在shell中实验
  75.          if [ "$SWAP_THRESHOLD" == "" ] || [ $mem_size -lt $SWAP_THRESHOLD ]; then  #如果nvram get apps_swap_threshold等于空 “或者” 上行的结果小雨 nvram get apps_swap_threshold  就执行  ||代表或者  有一个为真就执行
  76.                  pool_size=`df /dev/$APPS_DEV |sed '1d' |awk '{print $4}'`  #获取语句的结果  自己在shell中实验
  77.                  if [ $pool_size -gt $SWAP_SIZE ]; then  #如果上行的结果大于 nvram get apps_swap_size 结果就执行
  78.                          if [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ]; then  #如果$APPS_INSTALL_PATH/$SWAP_FILE  这个文件存在  就继续执行下面的  这个文件具体是哪里自行查看变量内容
  79.                                  swapoff $APPS_INSTALL_PATH/$SWAP_FILE #关闭swap交换
  80.                                  rm -rf $APPS_INSTALL_PATH/$SWAP_FILE #强制不提示删除swap交换文件
  81.                          fi

  82.                          swap_count=`expr $SWAP_SIZE / 1000 - 1`  #获取语句的结果  结果是多少  自己在shell中实验
  83.                          echo "dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count"  #输出内容
  84.                          dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count  #连续赋值
  85.                          echo "mkswap $APPS_INSTALL_PATH/$SWAP_FILE"  #输出内容
  86.                          mkswap $APPS_INSTALL_PATH/$SWAP_FILE  #制作swap交换文件
  87.                          echo "swapon $APPS_INSTALL_PATH/$SWAP_FILE" #输出
  88.                          swapon $APPS_INSTALL_PATH/$SWAP_FILE #开启swap交换文件
  89.                  else
  90.                          echo "No enough partition size!" #输出
  91.                          nvram set apps_state_error=3 #设置变量
  92.                          exit 1 #退出 输出1
  93.                  fi
  94.          fi
  95. fi


  96. nvram set apps_state_autorun=3 # EXECUTING 设置变量
  97. link_internet=`nvram get link_internet` #设置变量
  98. if [ "$link_internet" == "2" ]; then #如果nvram get link_internet结果等于2  就执行
  99.          app_update.sh &    #执行文件
  100. fi

  101. # run all APPs by order.
  102. app_init_run.sh allpkg start  #执行文件  带了参数  在app_init_run.sh文件里  $1=allpkg  $2=start


  103. nvram set apps_state_autorun=4 # FINISHED 设置变量
复制代码

评分

3

查看全部评分

0

主题

11

帖子

198

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
196
魔法值
0
注册时间
2018-5-5
发表于 2018-5-26 00:19:26 | 显示全部楼层
nice 顶一个

联系我们|手机版|KoolShare ( 沪ICP备13045430号962110 沪公网备31010402005377

GMT+8, 2019-6-19 21:19 , Processed in 0.084738 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表