GNU 监视而不擦除以前的输出

Ada*_*tan 7 command-line watch-command

gnuwatch是一个非常有用的检查程序输出的工具:它执行程序并每 2 秒全屏显示输出。

有时,我不想删除以前的输出,而是希望逐行打印带有时间戳。为此,我使用 bash 脚本,例如:

while true; 
    do echo -n "`date`   "; 
    ssh ubuntu@server -o ConnectTimeout=1 "uptime" ; 
    sleep 1; 
done
Run Code Online (Sandbox Code Playgroud)

是否有watch类似的工具可以运行命令并在一行中显示其带有时间戳的输出,而无需删除以前的输出?

Oli*_*Oli 7

我想说你已经在简单的循环中找到了它,但你可以从这里做很多事情:

编写一个函数来为您处理该问题

function uberwatch {
    # call: uberwatch <interval> <command>
    while true; do
        "${@:2}";
        sleep $1;
    done
}
Run Code Online (Sandbox Code Playgroud)

你可以把它放在你的周围的某个地方~/.bashrc

将输出记录到文件,但继续查看watch

watch "command | tee -a watchlog.log"
Run Code Online (Sandbox Code Playgroud)

您仍然只能看到最新的运行情况,但如果需要,您可以挖掘历史日志。