数码产品

Linux如何重复执行命令每隔几秒或者每隔几分钟

作为Linux系统管理员通常需要在特定时间段内重复运行某些命令。就类似一个定时任务在定时执行某一个操作,下面就来看一下如何在一定周期之内执行相应的命令或者脚本,啥意思呢?举个例子就比如每隔10秒执行一个命令,这该如何做呢?下面就来看一下如何实现吧。

1,使用crontab命令

crontab 命令用于维护 crontab 文件或 cron 表。cron 表包含要在系统上定期运行的命令列表。每个用户都可以有一个 crontab,我们可以在其中创建和修改任务。但是,Cron只能用于一分钟的最小间隔,即如果要间隔10秒运行一次命令,则需要创建60s/10s =6 个cron条目,如果是每隔20秒则创建3个cron条目,每隔30秒则创建2个cron条目。下面是cron表的解释

定时任务执行解释 命令
运行cron job 每分钟 * * * * *  /root/backup.sh
运行cron job 每30分钟 30 * * * *  /root/backup.sh
运行cron job 每小时 0 * * * * /root/backup.sh
运行cron job 每天深夜0点 0 0 * * *  /root/backup.sh
运行cron job 每天早上2点 0 2 * * *  /root/backup.sh
运行cron job 每个月1号 0 0 1 * *  /root/backup.sh
运行cron job 每个月15号 0 0 15 * *  /root/backup.sh
运行cron job 在12月1号深夜0点 0 0 0 12 *  /root/backup.sh
运行cron job 每周六深夜0点 0 0 * * 6  /root/backup.sh

[root@sharplee creatfile]# crontab -e
* * * * * date >> /home/sharplee/ss.txt
* * * * * (sleep 10; date >> /home/sharplee/ss.txt)
* * * * * (sleep 20; date >> /home/sharplee/ss.txt)
* * * * * (sleep 30; date >> /home/sharplee/ss.txt)
* * * * * (sleep 40; date >> /home/sharplee/ss.txt)
* * * * * (sleep 50; date >> /home/sharplee/ss.txt)

通过上图可以看出,命令每隔10s钟执行一次,命令主要是打印出当前的时间重定向到一个文件中。所以打印的文件的值是每隔10s写入一次。

2,使用watch命令

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

[root@sharplee creatfile]#watch -n 10 'date >> /home/sharplee/date.txt' 

通过上图可以看出通过watch命令也可以实现间隔10秒执行相同的命令。watch命令还可以用于监视内存,以及监视磁盘拷贝等。

[root@sharplee creatfile]# watch free -n

 [root@sharplee creatfile]# watch -n 10 df -h

 [root@sharplee creatfile]# cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ && watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso

3,使用sleep命令

sleep 命令还可以与 while 循环或 for 循环等循环一起使用,以重复或定期运行命令。打开终端并使用 for 循环,执行以下命令:

[root@sharplee creatfile]# for i in {1..8}; do echo -n "running the command $i time"; sleep 3; done

那使用for循环如何实现上面两个例子,把日期输入到一个文本中呢?

[root@sharplee creatfile]# for i in {1..1000}; do date >> testd.txt; sleep 10; done

下面来通过while循环实现每隔10s重复执行命令。

[root@sharplee creatfile]# while true; do date >> teste.txt; sleep 10; done

总结:本文主要讲解了如何在Linux终端中定期或重复运行命令。从运行命令到每 隔几秒或每小时运行一次脚本,通过小编亲自实践,所有操作都可以使用这三种方法完成。具体场景中请把后面执行的命令换成实际的命令或者脚本即可。

posted @ 2022-03-20 22:52  Hackerman  阅读(12244)  评论(0编辑  收藏  举报
数码产品