如何获取opkg install的安装进度?

如何获取opkg install的安装进度?

我正在编写一个使用以下命令安装升级的应用程序opkg包装系统

有没有办法获得整体进度,以便我可以制作进度条?

答案1

我对opkg不熟悉,不知道它是否提供原生进度条;我看到的最接近的是-V详细程度。如果没有更好的解决方案,那么您可以保存以下脚本(例如,名为 的文件jspb),使其可执行(chmod u+x jspb),然后调用jspb opkg upgrade packagenamegetA进度条。

更好的创建进度条的方法,但我想写一些东西来模拟进度条。它有一个主要要求:/proc 伪文件系统的存在,以便它可以跟踪您给它的作业的进度。否则,它相当简单,因此应该可以在大多数 shell 中工作(在 bash、ksh、dash 和 Bourne sh 中测试)。因为它是如此可移植,shellcheck 抱怨脚本使用的“过时”和“遗留”结构,这是正确的。它确实能够智能地填充屏幕的列 - 尝试在更新过程中调整窗口大小!

#!/bin/sh

# Jeff's progress bar
# *simulates* a progress bar

# better options:
# https://github.com/Xfennec/progress
# http://www.theiling.de/projects/bar.html

if [ ! -n "$*" ]
then
  echo Nothing to do, exiting!
  exit 0
fi

if [ ! -d /proc/$$ ]
then
  echo Missing /proc, sorry
  exit 1
fi

sh -c "$*" &
PID=$!
# give the command a chance to fail immediately, if it will
sleep 1

# dash, Bourne sh do not have $RANDOM
HAVERANDOM=0
if [ -n "$RANDOM" ]
then
  HAVERANDOM=1
fi

i=1
while [ -d /proc/$PID ]
do
  # simulate progress
  if [ $HAVERANDOM ]
  then
    sleep `expr $RANDOM % 4`
  else
    sleep `expr $i % 4`
  fi

  # see if our window got resized
  cols=`tput cols`
  if [ $i -ge $cols ]
  then
    printf "\r"
    # clear out the old progress bar and start over!
    while [ $i -gt 1 ]
    do
      printf " "
      i=`expr $i - 1`
    done
    printf "\r"
  fi
  # making progress!
  printf "#"
  i=`expr $i + 1`
done

# only clear the progress bar it if we wrote something
if [ $i -gt 1 ]
then
  pacman=1
  printf "\r"
  while [ $pacman -lt $i ]
  do
    printf " "
    pacman=`expr $pacman + 1`
  done
  printf "\r"
fi

主副本已开启吉图布

相关内容