发布网友 发布时间:2022-02-26 09:36
共2个回答
懂视网 时间:2022-02-26 13:57
产品型号:thinkpad E15
系统版本:centos7
软件版本:crontab 1.5
在linux系统中,执行周期的任务,可以使用crontab。crontab会把你指定的工作或任务,按照你设定的周期一直循环执行下去启动crond服务[root@xuegod63 ~]# systemctl start crond
crontab具体计划任务书写格式:
* * * * * command需要执行的命令
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列表示星期0~6(星期日用0或7表示)
第6列要运行的命令
一行对应一个任务,特殊符号的含义:
* 代表取值范围内的数字 (每)
/ 指定时间的间隔频率 */10 0-23/2
- 代表从某个数字到某个数字 8-17
, 分开几个离散的数字 6,10-13,20
创建计划任务
例1:每天凌晨2点1分开始备份数据
[root@xuegod63 spool]# crontab -e #添加计划任务
1 2 * * * tar zcvf /opt/grub2.tar.gz /boot/grub2
[root@xuegod63 ~]# crontab -l #查看
例2:以非root用户添加计划任务。 这里使用bin用户来添加
[root@xuegod63 ~]# crontab -u bin -e
*/10 * * * * echo "aaaaaaa" >> /tmp/bin.txt
系统级别的计划任务
[root@xuegod63 etc]# vim /etc/crontab
1 2 * * * root echo "aaaaaaa" >> /tmp/1.txt
热心网友 时间:2022-02-26 11:05
crontab的粒度最小是到分钟,但是我们还是可以通过变通的方法做到隔多少秒运行一次。
以下方法将每20秒执行一次
crontab -e
* * * * * /bin/date
* * * * * sleep 20; /bin/date
* * * * * sleep 40; /bin/date
说明:需要将/bin/date更换成你的命令即可
这种做法去处理隔几十秒的定时任务还好,要是每1秒运行一次就得添加60条记录。。。如果每秒运行还是用方案一吧。
也可以编写shell脚本实现
crontab.sh
#!/bin/bash
step=2 #间隔的秒数,不能大于60
for (( i = 0; i < 60; i=(i+step) )); do
date
sleep $step
done
exit 0
crontab -e 输入以下语句,然后:wq 保存退出。
* * * * * /home/crontab/crontab.sh