如果我执行的命令花费的时间超过一定的时间(比如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)
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 & 将整个过程置于后台。要停止蜂鸣声,请终止蜂鸣器进程(如果您希望工作继续而不发出蜂鸣声)或终止工作进程本身(这将停止工作和蜂鸣声)。