如何让linux定时任务crontab按秒执行

发布网友 发布时间: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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com