如何运行或重复Linux命令永远每X秒

系统管理员通常需要在特定时间段内重复运行命令。 通常,这样的任务可以用简单轻松完成的cron命令 在大多数情况下,这应该工作,但你可以运行cron命令的最短时间是每1分钟。 相信与否,在许多情况下,这太慢了。

每秒运行Linux命令

在本教程中,你会学到简单的脚本技术来监视或连续运行的类似状态保持关注特定命令top命令(持续监控进程和内存利用率),每3秒配置。

我们不会停下来讨论原因,为什么你需要经常运行命令。 我相信每个人都有不同的理由,在他们的日常工作,甚至在家里的电脑和笔记本电脑。

1.使用watch命令

手表是一个Linux命令,允许您定期执行命令或程序,并同时显示在屏幕上输出。 这意味着您将能够及时看到程序输出。 默认情况下,手表每2秒重新运行一次命令/程序。 间隔可以很容易地更改,以满足您的要求。

监视内存使用情况

“Watch”非常容易使用,要测试它,你可以立即启动一个Linux终端,然后键入以下命令:

# watch free -m

上面的命令将检查您的系统的可用内存和更新的结果free命令每两秒钟。

监视Linux中的内存使用情况

根据上述输出可以看到,您有一个标题,显示有关(从左到右)更新间隔,正在执行的命令和当前时间的信息。 如果你想隐藏这个标题,您可以使用-t选项。

下一个逻辑问题是 - 如何更改执行间隔。 为了这个目的,你可以使用-n选项,指定与该命令将执行的时间间隔。 此间隔以秒为单位指定。 因此,让我们假设你想运行script.sh每10秒文件,你可以像这样做:

# watch -n 10 script.sh

请注意 ,如果你运行像上面所示的命令,你将需要cd的目录(学习了解15 CD命令的例子 ),其中该脚本位于或以其他方式指定的完整路径该脚本。

watch命令的其他有用的选项是:

  1. -b -创建蜂鸣声,如果命令的退出是非零。
  2. -c -解释ANSI颜色序列。
  3. -d -突出在命令输出的变化。

监视已登录的用户,正常运行时间和负载平均

假设您想要监控已登录的用户,服务器正常运行时间和负载平均输出连续每隔几秒钟,然后使用以下命令如下所示:

# watch uptime

观察Linux负载平均值

要退出命令,按CTRL+C

在这里, 'uptime'命令将运行并默认显示更新的结果,每2秒。

监视复制命令的进度

在Linux中,同时使用拷贝从一个位置文件到其他cp命令,数据的进度没有显示,看到被复制的数据的进度,您可以使用watch一起命令杜-s命令检查磁盘使用情况的即时的。

# cp ubuntu-15.10-desktop-amd64.iso /home/youcl/ &
# watch -n 0.1 du -s /home/youcl/ubuntu-15.10-desktop-amd64.iso 

监视复制命令的进度

如果你认为上面的过程过于复杂,实现,那么我建议你去高级副本的命令 ,这表明数据的进步,同时复制。

2.使用sleep命令

睡眠通常用于调试shell脚本,但它也有许多其他有用的目的。 例如,当结合forwhile循环,你可以得到相当真棒结果。

如果你是新来bash脚本编程,您可以查看我们的指南,了解有关bash的循环在这里

如果这是你听到的第一次"sleep"命令时,它被用来延迟东西指定的时间量。 在脚本中,可以使用它来告诉脚本运行命令1,等待10秒,然后运行命令2。

有了上面的循环,你可以告诉bash运行一个命令,睡眠秒施氮量,然后再次运行该命令。

下面你可以看到两个循环的例子:

for循环示例

# for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done

上述一个衬里,将运行echo命令 ,并显示当前的日期,共10次,拥有5秒执行之间睡觉。

下面是一个示例输出:

This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016
This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016
This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016
This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016
This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016
This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016
This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016
This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016
This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016
This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016

你可以用自己的命令或脚本改变echo日期命令,并改变每个您需要的睡眠时间间隔。

while循环示例

# while true; do echo -n "This is a test of while loop";date ; sleep 5; done

这里是示例输出:

This is a test of while loopWed Feb 17 20:52:32 EET 2016
This is a test of while loopWed Feb 17 20:52:37 EET 2016
This is a test of while loopWed Feb 17 20:52:42 EET 2016
This is a test of while loopWed Feb 17 20:52:47 EET 2016
This is a test of while loopWed Feb 17 20:52:52 EET 2016
This is a test of while loopWed Feb 17 20:52:57 EET 2016

上面的命令将运行,直到它被杀死或用户中断 它可以派上用场,如果你需要运行在后台运行一个命令,你不希望在cron的指望。

重要提示 :在使用上述方法,我们强烈建议您设置的时间间隔足够长的时间给你的命令有足够的时间来完成运行,下一个执行之前。

结论

本教程中的样本是有用的,但并不意味着完全取代cron软件 它是由你来找到哪一个更适合你,但如果我们必须分开两种技术的使用,我会说:

  1. 当您需要定期运行命令时,即使在系统重新启动后,也请使用cron。
  2. 对于要在当前用户会话中运行的程序/脚本,请使用本教程中说明的方法。

一如以往,如果您有任何问题或意见,不要犹豫,在下面的评论部分提交。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏