Linux crontab 实现每秒执行

简介:
linux crontab 命令,最小的执行时间是一分钟。如需要在小于一分钟内重复执行,可以有两个方法实现。
   1.使用延时来实现每N秒执行
  创建一个php做执行动作,非常简单,就是把当前时间写入log。
  <?php
  file_put_contents('/home/fdipzone/php/crontab/run.log', date('Y-m-d H:i:s')."\r\n", FILE_APPEND);
  ?>
  crontab -e 输入以下语句,然后 :wq 保存退出。
* * * * * php /home/fdipzone/php/crontab/tolog.php
* * * * * sleep 10; php /home/fdipzone/php/crontab/tolog.php
* * * * * sleep 20; php /home/fdipzone/php/crontab/tolog.php
* * * * * sleep 30; php /home/fdipzone/php/crontab/tolog.php
* * * * * sleep 40; php /home/fdipzone/php/crontab/tolog.php
* * * * * sleep 50; php /home/fdipzone/php/crontab/tolog.php
  使用 tail -f 查看执行情况,可以见到log每10秒被写入一条记录。
fdipzone@ubuntu:~$ tail -f /home/fdipzone/php/crontab/run.log
2014-03-31 21:47:01
2014-03-31 21:47:11
2014-03-31 21:47:21
2014-03-31 21:47:31
2014-03-31 21:47:41
2014-03-31 21:47:51
2014-03-31 21:48:01
  原理:通过延时方法 sleep N  来实现每N秒执行。
  注意:
  60必须能整除间隔的秒数(没有余数),例如间隔的秒数是2,4,6,10,12等。
  如果间隔的秒数太少,例如2秒执行一次,这样就需要在crontab 加入60/2=30条语句。不建议使用此方法,可以使用下面介绍的第二种方法。
   2.编写shell脚本实现
crontab.sh
#!/bin/bash
step=2 #间隔的秒数,不能大于60
for (( i = 0; i < 60; i=(i+step) )); do
$(php '/home/fdipzone/php/crontab/tolog.php')
sleep $step
done
exit 0
  crontab -e 输入以下语句,然后:wq 保存退出。
  # m h  dom mon dow   command
  * * * * * /home/fdipzone/php/crontab/crontab.sh

  使用 tail -f 查看执行情况,可以见到log每2秒被写入一条记录。
fdipzone@ubuntu:~/php/crontab$ tail -f run.log
2014-03-31 22:23:01
2014-03-31 22:23:03
2014-03-31 22:23:06
2014-03-31 22:23:08
2014-03-31 22:23:10
2014-03-31 22:23:12
2014-03-31 22:23:14
2014-03-31 22:23:16
2014-03-31 22:23:18
2014-03-31 22:23:20
2014-03-31 22:23:22
2014-03-31 22:23:25
2014-03-31 22:23:27
2014-03-31 22:23:29
2014-03-31 22:23:31
2014-03-31 22:23:33
2014-03-31 22:23:35
2014-03-31 22:23:37
2014-03-31 22:23:39
2014-03-31 22:23:41
2014-03-31 22:23:44
2014-03-31 22:23:46
2014-03-31 22:23:48
2014-03-31 22:23:50
2014-03-31 22:23:52
2014-03-31 22:23:54
2014-03-31 22:23:56
2014-03-31 22:23:58
2014-03-31 22:24:00
  原理:在sh使用for语句实现循环指定秒数执行。
  注意:如果60不能整除间隔的秒数,则需要调整执行的时间。例如需要每7秒执行一次,就需要找到7与60的最小公倍数,7与60的最小公倍数是420(即7分钟)。
  则 crontab.sh step的值为7,循环结束条件 i<420, crontab -e可以输入以下语句来实现
  # m h  dom mon dow   command
  */7 * * * * /home/fdipzone/php/crontab/crontab.sh


最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
Shell Apache
77Linux - crontab定时器
77Linux - crontab定时器
53 0
|
10月前
|
存储 Linux Shell
Linux中的计划任务—Crontab调度一次性执行的任务at/batch
Linux中的计划任务—Crontab调度一次性执行的任务at/batch
424 0
|
9月前
|
Unix Linux
Linux中的Crontab:定时任务管理器
`crontab`是Linux下的定时任务管理器,用于设置周期性执行的任务。用户可以通过`crontab -l`查看任务,`crontab -e`编辑,`crontab -r`删除任务。任务格式为:`* * * * * command`,分别代表分钟、小时、日期、月份、星期,例如`30 10 * * * /path/to/script.sh`。注意确保命令有执行权限,处理环境变量,并关注日志文件 `/var/log/syslog` 或 `/var/log/cron`。学会使用`crontab`能有效自动化Linux系统的日常任务。
|
5月前
|
Linux
Linux Crontab 查看定时任务启动没
【10月更文挑战第20天】在Linux系统中,crontab用于设置周期性执行的任务。查看当前用户的Crontab任务列表,使用`crontab -l`;查看所有用户任务,使用`sudo crontab -l`或指定用户`sudo crontab -u username -l`。
212 5
|
7月前
|
监控 Linux 调度
在Linux中,如何进行调度任务?什么是 crontab 并解释 crontab 中的字段?
在Linux中,如何进行调度任务?什么是 crontab 并解释 crontab 中的字段?
|
8月前
|
数据挖掘 Linux Shell
linux 使用crontab 创建定时任务
linux 使用crontab 创建定时任务
168 0
linux 使用crontab 创建定时任务
|
7月前
|
监控 Ubuntu Linux
|
9月前
|
Ubuntu Linux 数据安全/隐私保护
Linux Ubuntu crontab 添加错误 提示:no crontab for root - using an empty one 888
Linux Ubuntu crontab 添加错误 提示:no crontab for root - using an empty one 888
207 3
|
8月前
|
存储 监控 Unix
Linux Crontab定时表教学大全(一看就会!)
Crontab 是一种在类 Unix 系统(如 Linux、FreeBSD、Solaris 等)中用于设置和管理定时任务的实用工具。通过编写 crontab 文件,用户可以安排命令或脚本在特定的时间点或周期性地自动执行。本教学将引导您了解 crontab 的基本概念、使用方法、语法和常见问题解决。
445 0
|
9月前
|
Linux
Linux定时任务:详解crontab与crond
Linux定时任务:详解crontab与crond
253 0