我有一个简单的
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。