ITPub博客

首页 > > > Shell下重复多次执行命令

Shell下重复多次执行命令

作者:格伯纳 时间:2020-07-02 14:55:26 0 删除 编辑

在Linux shell下通常需要重复多次执行某条命令。

watch

可能是最好用的命令了。

watch -n x <cmd>

x是间隔,以秒为单位。

例如:

$ watch -n 1 date

你将得到一个全屏(占据整个shell窗口)的输出:

Every 1.0s: date                     Fri Jul 21 14:17:31 2017

Fri Jul 21 14:17:31 CST 2017

第一行是watch的参数,左边是间隔时间,右边是上一次执行时间。

下面是命令输出,因为我们这里是date,所以输出的也是时间。

watch可以不指定参数,默认2S执行一次命令。

$ watch date

shell

shell老司机可能更喜欢这个方法。

$ while true; do date; sleep 1; done
Fri Jul 21 14:20:24 CST 2017
Fri Jul 21 14:20:25 CST 2017
Fri Jul 21 14:20:26 CST 2017
Fri Jul 21 14:20:27 CST 2017

有一个滚动的输出,有时候看起来会更酷一些。

xargs

$ seq 10 | xargs -i date
Fri Jul 21 14:20:55 CST 2017
Fri Jul 21 14:20:55 CST 2017
Fri Jul 21 14:20:55 CST 2017
Fri Jul 21 14:20:55 CST 2017
Fri Jul 21 14:20:55 CST 2017
Fri Jul 21 14:20:55 CST 2017
Fri Jul 21 14:20:55 CST 2017
Fri Jul 21 14:20:55 CST 2017
Fri Jul 21 14:20:55 CST 2017
Fri Jul 21 14:20:55 CST 2017

seq 生成一个1-10的数组。xargs兴高彩烈的拿着这个数组,准备将数组元素传给date 命令做参数。xargs -i会查找命令字符串中的{},并用数组元素替换{}。但是xargs一看,WTF!命令里面居然没有占位符。那好吧,就执行10遍命令,让参数随风去吧。

$ seq 10 | xargs -i date {}
date: invalid date ‘1’
date: invalid date ‘2’
date: invalid date ‘3’
date: invalid date ‘4’
date: invalid date ‘5’
date: invalid date ‘6’
date: invalid date ‘7’
date: invalid date ‘8’
date: invalid date ‘9’
date: invalid date ‘10’

这种方法不能加延时,如果有谁知道,这种方法如何加延时,请告诉我。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3141142/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: PostgreSQL 约束
请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    983935