我有一个简单的
shell脚本,它也在下面:
#!/usr/bin/sh echo "starting the process which is a c++ process which does some database action for around 30 minutes" #this below process should be run in the background <binary name> <arg1> <arg2> exit
现在我想要的是监控和显示过程的状态信息.
我不想深入了解它的功能.由于我知道该过程将在30分钟内完成,我想向用户显示每1分钟完成3.3%并且还检查过程是否在后台运行,最后如果过程完成我想要显示它完成了.
有人可以帮帮我吗?
解决方法
你能做的最好的事情就是在你的应用程序中加入某种仪器,
并让它报告处理的工作项目/工作总量方面的实际进展情况.
并让它报告处理的工作项目/工作总量方面的实际进展情况.
如果做不到这一点,你确实可以参考物品运行的时间.
这是我过去使用的样本.适用于ksh93和bash.
#! /bin/ksh set -u prog_under_test="sleep" args_for_prog=30 max=30 interval=1 n=0 main() { ($prog_under_test $args_for_prog) & pid=$! t0=$SECONDS while is_running $pid; do sleep $interval (( delta_t = SECONDS-t0 )) (( percent=100*delta_t/max )) report_progress $percent done echo } is_running() { (kill -0 ${1:?is_running: missing process ID}) 2>& -; } function report_progress { typeset percent=$1 printf "\r%5.1f %% complete (est.) " $(( percent )) } main