当前位置: 首页 > 面试题库 >

bash:默默杀死后台功能进程

汪阳辉
2023-03-14
问题内容

贝壳大师

我有一个bash shell脚本,其中启动了一个后台功能,例如foo(),以显示一个无聊且冗长的命令的进度条:

foo()
{
    while [ 1 ]
    do
        #massively cool progress bar display code
        sleep 1
    done
}

foo &
foo_pid=$!

boring_and_long_command
kill $foo_pid >/dev/null 2>&1
sleep 10

现在,foo去世时,我看到以下文本:

/home/user/script: line XXX: 30290 Killed                  foo

这完全破坏了我本来非常棒的进度条显示的出色功能。

我如何摆脱此消息?


问题答案:
kill $foo_pid
wait $foo_pid 2>/dev/null

顺便说一句,我不知道您的进度栏多么酷,但是您看过Pipe Viewer(pv)吗?
http://www.ivarch.com/programs/pv.shtml



 类似资料:
  • 我基本上是想让bash脚本永远运行节点脚本。我制作了以下bash脚本: 我希望当它运行时,它用给定的脚本启动节点,检查节点是否退出,如果退出,Hibernate6秒,然后重新打开节点。另外,我希望它在后台运行,并将其pid(bash pid)写入一个名为“pid”的文件中。 显然,上面解释的一切都如预期的那样工作,但我也期望当bash脚本的pid被杀死时,节点脚本将停止运行,我不知道为什么在我看来

  • 问题内容: 我有一个简单的程序,可以测试当模块不存在时是否能够引发异常。 有时我喜欢在另一个模块中使用此代码: 令人惊讶的是,当我以这种方式运行它时,它不起作用: 这种情况在Ubuntu中发生,并且在干净的CentOS 7.3中也发生。 问题答案: 您正在遇到“导入锁定”。 该文档提到了线程期间导入的限制,您违反了第一个限制(强调我的意思): 虽然导入机制是线程安全的,但是由于提供线程安全的方式存

  • 问题内容: 如何杀死linux中最后一个生成的后台任务? 例: 问题答案: bash中有一个特殊的变量: $!扩展为在后台执行的最后一个进程的PID。

  • 我正在使用一个后台进程,这将连接到一个android设备的前端应用程序。 我想扼杀这个过程: 我有杀死应用程序的adb命令,作为

  • 问题内容: 我有一个bash脚本,该脚本启动一个子进程,该子进程有时会崩溃(实际上是挂起),并且没有明显的原因(封闭源代码,因此我无能为力)。结果,我希望能够在给定的时间内启动此过程,并在给定的时间之后未成功返回的情况下将其终止。 有没有 简单 而 强大的 方法可以使用bash来实现这一目标? PS:告诉我这个问题是否更适合serverfault或超级用户。 问题答案: (如下所示: BASH常见

  • 问题内容: 我需要制作一个从用户获取以下内容的脚本: 1)进程名称(在Linux上)。 2)此进程写入的日志文件名。 它需要终止该进程并确认该进程已关闭。将日志文件名更改为带有时间和日期的新文件名。然后再次运行该过程,确认它已启动,以便继续写入日志文件。 先谢谢您的帮助。 问题答案: 您可以使用以下命令检索给定名称的进程ID(PID): 希望这可以帮助