如果命令需要超过1分钟才能完成,请发出哔哔声

vrd*_*dhn 10 bash exec

如果我执行的命令花费的时间超过一定的时间(比如1分钟),我正在寻找我的bash来发出哔哔声.

如果它在那里每隔几分钟就一直发出哔哔声,直到我点击进入或者其他东西......这很有意思.

任何聪明的想法?

我可以使用屏幕的监视功能作为最后的手段.(我在使用cygwin,但这不重要).

让我澄清一下:

 $ ls    
   < output appears >   
 $ rsync foo bar 
   < since this takes lot of time, i switch to other console
      and forget this .. .and remember only after some time >
    < so when this finished, i want it to beep >
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 2

Linux 中有一些命令会为您发出蜂鸣声。查看 Ubuntu(可能还有其他发行版)可用的 beep 源代码,或者查看http://www.johnath.com/beep/beep.c的另一个源代码(我相信是相同的代码)。

它可以让您轻松控制频率、长度和重复次数(等等)。

要真正让它工作,您需要一个脚本,该脚本在后台启动实际的工作程序,然后进入"sleep 60"循环,发出蜂鸣声直到完成。

下面的脚本应该是一个好的开始。你用类似的东西运行它:

beeper sleep 3600
Run Code Online (Sandbox Code Playgroud)

sleep 3600在后台运行,每分钟发出蜂鸣声,直到完成。

#!/bin/bash
$* &
pid=$!
oldmin=$(date +%M)
exf=$pid
while [[ $exf == $pid ]] ; do
    min=$(date +%M)
    if [[ $oldmin != $min ]] ; then
        beep
        oldmin=$min
    fi
    exf="$(ps -ef | awk '{print $2}' | grep $pid)"
    sleep 2
done
Run Code Online (Sandbox Code Playgroud)

这就是它的工作原理。它将参数作为后台进程运行并保存进程 ID。然后它每隔几秒循环一次,检查分钟何时变化,并在这种情况下发出蜂鸣声(因此这里的第一声蜂鸣声可能是一分钟以内的任何声音)。

当进程从 的输出中消失时,就会退出循环ps

您甚至可以执行 beeper sleep 3600 & 将整个过程置于后台。要停止蜂鸣声,请终止蜂鸣器进程(如果您希望工作继续而不发出蜂鸣声)或终止工作进程本身(这将停止工作和蜂鸣声)。