作为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终端中定期或重复运行命令。从运行命令到每隔几秒或每小时运行一次脚本,通过小编亲自实践,所有操作都可以使用这三种方法完成。具体场景中请把后面执行的命令换成实际的命令或者脚本即可。
转载请注明:XAMPP中文组官网 » Linux如何每隔几秒或者每隔几分钟重复执行命令