Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.40 KB | None | 0 0
  1. #!/bin/sh
  2. R_BOLD="\033[31m\033[1m"
  3. G_BOLD="\033[32m\033[1m"
  4. BOLD="\033[33m\033[1m"
  5. NORM="\033[0m"
  6. INFO="$BOLD Info: $NORM"
  7. ERROR="$BOLD *** Error: $NORM"
  8. INPUT="$BOLD => $NORM"
  9. SWAP_FILE=`nvram get apps_swap_file`
  10. SWAP_SIZE=`nvram get apps_swap_size`
  11. i=1
  12. cd /tmp
  13. echo -e "$INFO 此脚本文件指导你创建虚拟内存"
  14. echo -e "$INFO 默认创建的虚拟内存文件存放在 \"swap\" 文件夹并不可改变"
  15. echo -e "$INFO 检查可用的挂载分区......"
  16. for mounted in `/bin/mount |awk '{if($0 ~/mnt/){ print $3}}'` ; do
  17. echo -e "$G_BOLD [$i] --> $mounted $NORM"
  18. eval mounts$i=$mounted
  19. i=`expr $i + 1`
  20. done
  21. if [ $i == "1" ] ; then
  22. echo -e "$ERROR $R_BOLD 未找到挂载磁盘,执行退出。$NORM"
  23. exit 1
  24. fi
  25. echo -en "$INPUT $BOLD 请输入磁盘分区序号或键入 0 退出程序 $NORM\n$BOLD[0-`expr $i - 1`]$NORM: "
  26. read partitionNumber
  27. if [ "$partitionNumber" == "0" ] ; then
  28. echo -e $INFO 执行退出...
  29. exit 0
  30. fi
  31. if [ "$partitionNumber" = "" ] || [ "`echo $partitionNumber|sed 's/[0-9]//g'`" != "" ] ; then
  32. echo -e "$ERROR $R_BOLD 无效的参数,执行退出...$NORM"
  33. exit 1
  34. fi
  35. if [ "$partitionNumber" -gt `expr $i - 1` ] ; then
  36. echo -e "$ERROR $R_BOLD 分区序号无效,执行退出...$NORM"
  37. exit 1
  38. fi
  39. eval entPartition=\$mounts$partitionNumber
  40. echo -e "$INFO 已选择$G_BOLD $entPartition $NORM磁盘分区"
  41. APPS_INSTALL_PATH=$entPartition/swap
  42. case "$1" in
  43. start)
  44. mem_size=`free |awk '$0 ~/Swap/{print $4}'`
  45. pool_size=`df |awk '{if($0 ~"'$entPartition'") {print $4}}'`
  46. if [ $pool_size -gt $SWAP_SIZE ]; then
  47. [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ] && swapoff $APPS_INSTALL_PATH/$SWAP_FILE
  48. [ -d "$APPS_INSTALL_PATH" ] && rm -rf $APPS_INSTALL_PATH
  49. echo -e "$INFO 建立虛擬記憶體資料夾: $APPS_INSTALL_PATH "
  50. mkdir -p $APPS_INSTALL_PATH
  51. echo -en "$INFO 默认虚拟内存大小: [$BOLD$SWAP_SIZE$NORM],新文件大小:\c $BOLD"
  52. read answer
  53. if [ "$answer" = "" ]
  54. then
  55. {
  56. echo -e "$INFO 虚拟内存大小未改变"
  57. }
  58. else
  59. {
  60. if [ "$answer" != "" ] && [ "`echo $answer|sed 's/[0-9]//g'`" = "" ] && [ $answer -lt $pool_size ]
  61. then
  62. {
  63. SWAP_SIZE=$answer
  64. echo -en "$INFO 虚拟内存大小已改变: $BOLD[$SWAP_SIZE]$NORM \n"
  65. }
  66. else
  67. {
  68. echo -e "$ERROR $R_BOLD 无效的参数! $NORM"
  69. exit 1
  70. }
  71. fi
  72. }
  73. fi
  74. swap_count=`expr $SWAP_SIZE / 1000 - 1`
  75. echo -e "$INFO dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count"
  76. dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count
  77. echo -e "$INFO 已创建虚拟内存文件: $APPS_INSTALL_PATH/$SWAP_FILE"
  78. mkswap $APPS_INSTALL_PATH/$SWAP_FILE
  79. echo -e "$INFO $G_BOLD 虚拟内存路径:$APPS_INSTALL_PATH/$SWAP_FILE $NORM"
  80. swapon $APPS_INSTALL_PATH/$SWAP_FILE
  81. echo -e "**********************************************************"
  82. echo -e " ${G_BOLD}虚拟内存:$NORM 总计($G_BOLD$(free |grep -A1 "Swap" |awk '{print $2}')$NORM) 已用($G_BOLD$(free |grep -A1 "Swap" |awk '{print $3}')$NORM) 可用($G_BOLD$(free |grep -A1 "Swap" |awk '{print $4}')$NORM)"
  83. echo -e "**********************************************************"
  84. fi
  85. echo -e "$INFO 是否创建启动项? y? :\c "
  86. read yor
  87. if [ "$yor" = "y" ]
  88. then
  89. {
  90. [ -e "/jffs/scripts/services-start" ] && [ `cat /jffs/scripts/services-start |awk '{if($0 ~/swapon/) {print $0}}'|wc -l` -ge 1 ] &&\
  91. sed -i 'N;/\n.*swapon/!P;D' /jffs/scripts/services-start && sed -i '/swapon/d' /jffs/scripts/services-start
  92. [ ! -e "/jffs/scripts/services-start" ] && echo "#!/bin/sh" > /jffs/scripts/services-start
  93. [ `grep "#!/bin/sh" /jffs/scripts/services-start |wc -l` -lt 1 ] && sed -i '1i#!\/bin\/sh' /jffs/scripts/services-start
  94. sed -i '1asleep 30' /jffs/scripts/services-start
  95. sed -i '2aswapon '$APPS_INSTALL_PATH'/'$SWAP_FILE'' /jffs/scripts/services-start
  96. chmod 755 /jffs/scripts/services-start
  97. echo -e "$INFO $G_BOLD开机启动项已创建! $NORM"
  98. }
  99. else
  100. {
  101. echo -e "$INFO $G_BOLD开机启动项未创建成功,执行退出... $NORM"
  102. exit 1
  103. }
  104. fi
  105. ;;
  106. stop)
  107. [ -e "/jffs/scripts/services-start" ] && [ `cat /jffs/scripts/services-start |awk '{if($0 ~/swapon/) {print $0}}'|wc -l` -ge 1 ] &&\
  108. sed -i 'N;/\n.*swapon/!P;D' /jffs/scripts/services-start && sed -i '/swapon/d' /jffs/scripts/services-start
  109. [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ] && swapoff $APPS_INSTALL_PATH/$SWAP_FILE
  110. [ -d "$APPS_INSTALL_PATH" ] && rm -rf $APPS_INSTALL_PATH
  111. echo -e "**********************************************************"
  112. echo -e " ${G_BOLD}虚拟内存:$NORM 总计($G_BOLD$(free |grep -A1 "Swap" |awk '{print $2}')$NORM) 已用($G_BOLD$(free |grep -A1 "Swap" |awk '{print $3}')$NORM) 可用($G_BOLD$(free |grep -A1 "Swap" |awk '{print $4}')$NORM)"
  113. echo -e "**********************************************************"
  114. ;;
  115. *)
  116. exit 1
  117. ;;
  118. esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement