加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 启动并监视shell脚本中的进程以完成

发布时间:2020-12-15 21:05:25 所属栏目:安全 来源:网络整理
导读:我有一个简单的 shell脚本,它也在下面: #!/usr/bin/shecho "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 backgroundbinary name arg1 arg2exit 现在我
我有一个简单的 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读