Linux任务调度:实现每五分钟定时执行 (linux定时每五分钟)

Linux作为一款自由开源的操作系统,已经成为了许多企业和个人的首选。其中,任务调度是Linux内核的一个重要特性,是一种能够自动化地执行定期或无限期的任务的机制。本文将会向大家介绍如何在Linux中实现每五分钟定时执行的任务调度。

任务调度介绍

在Linux系统中,任务调度器的作用是使计算机对系统内的任务进行管理和安排。任务调度器可以让你安排一项或多项任务在指定的时间点或周期性地运行。

在Linux中,cron就是最常见的任务调度器程序,它可以协助程序员统筹安排 Linux 系统中的一切任务,例如备份数据、生成数据报告、修改权限、开启服务等等,还可以设置清理缓存、定期重启等任务。

如何使用cron进行任务调度?

需要编辑crontab文件。

在终端中输入:

“`

$ crontab -e

“`

这时,编辑器就会打开一个新的文件,在这里输入任务的配置信息,格式为:

“`

* * * * * /path/to/command arg1 arg2

“`

每个部分的意思为:

“`

* * * * * command to be executed

– – – – –

| | | | |

| | | | +- Weekday (0-6) (Sunday=0)

| | | +—— Month (1-12)

| | +——- Day of the Month (1-31)

| +——– Hour (0-23)

+——— Minute (0-59)

“`

上面的星号代表任何值皆可,也就是说,大部分情况下你并不需要设置所有选项值,仅仅只需要关注你需要的那个时间即可。例如,如果你想让一条命令每五分钟执行一次,只需要这样输入:

“`

*/5 * * * * /path/to/command

“`

其中,*/5 表示每隔五分钟执行一次,其余选项以星号代替,表示任何值皆可。当然,你需要将 /path/to/command 替换成你的任务命令。

如果你希望任务输出到文件中,可以在命令末尾添加 ‘> /path/to/file’,例如:

“`

*/5 * * * * /path/to/command > /var/log/command.log

“`

这个命令将把任务输出到文件 /var/log/command.log 中。

保存文件后,crontab就会自动将其加入到任务队列里,然后计算机就会在你指定的时间点自动运行任务了。

如果你想查看当前已经设置的任务,请在终端输入:

“`

$ crontab -l

“`

如何使用anacron进行任务调度?

除了cron外,Linux中的另一个任务调度器是anacron,它特别适用于那些在电脑开机/关闭期间漏掉任务的情况。

anacron也使用类似于crontab的方式来定义任务,但还有一些额外的选项你需要了解:

“`

RANDOM_DELAY:随机延时

如果多个任务同时启动,可以使用RANDOM_DELAY选项让它们之间产生一些随机的延时,避免资源争夺。

START_HOURS_RANGE:启动时间范围

anacron可以让你在一个时间范围内启动任务,例如,你可以指定任务只有在凌晨1点到5点之间执行,这样可以避免任务耗费太多资源。

KILL_BEFORE_START:杀死之前执行的任务

例如,如果有一个任务耗费了太多系统资源,可能会导致新任务无法开启,这时就可以指定KILL_BEFORE_START选项,让anacron在启动任务之前杀死该任务。

“`

如果你要在anacron中实现每五分钟定时执行的任务,你需要编写一个脚本文件,在文件中定义任务调度的方式,例如:

“`

#!/bin/sh

# Set defaults

DELAY=${DELAY:-“0”}

# Sleep for random delay

if [ $DELAY -gt 0 ]; then

sleep $(( (RANDOM % $DELAY) + 1 ))m

fi

# Execute command

/path/to/command

“`

其中,DELAY参数可以用来实现随机延时,也可以手动设定延时时间。然后,你需要将该脚本加入到anacron的任务调度表中:

在终端中输入:

“`

$ sudo nano /etc/anacrontab

“`

然后在尾部添加:

“`

5 0 * * * root /path/to/script

“`

这个命令会在每天的0:05执行同一个脚本,即为 /path/to/script。

在Linux系统中使用任务调度器进行自动任务管理能够大大减轻工作量,让程序员无需手动干涉的同时也能保证重复任务的执行细节。本文向大家介绍了如何在cron和anacron中实现每五分钟的定时任务,包括任务调度表的编辑方式和几个常用的选项。希望这篇文章对你有所帮助,如有疑问请留言讨论。

相关问题拓展阅读:

crontab定时任务 和linux请求接口

我能看懂的我感觉所有人都可以看懂

1.  crontab文件格式:

  *****command

minute   hour    day   month   week      command

分时 知做瞎天      月星期命令

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,胡纳可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件

2. 特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例搭空如*/10,如果用在minute字段,表示每十分钟执行一次。

3.运行crontab –e 编写一条定时任务 */5 * * * * /home/test.sh 在每5分钟执行一次test.sh脚本。

4.查询当前用户定时任务或删除当前用户定时任务

chkconfig –list crond查看是否开机自动启动

chkconfig –level 35 crond on设置cond开机自动启动

测试get请求

$ curl

2、测试post请求

$ curl -d “user=nickwolfe&password=12345”

我长用到的就这俩。

linux 在screen下定时执行脚本

首先查看一下/etc/crontab文件:

  

  $ cat /etc/crontab

  SHELL=/bin/bash

  PATH=/in:/bin:/usr/in:/usr/bin

  肆如郑MAILTO=root

  HOME=/

  # run-parts

  01 * * * * root run-parts /etc/cron.hourly

* * * root run-parts /etc/cron.daily

* * 0 root run-parts /etc/cron.weekly

* * root run-parts /etc/cron.monthly

  前四行是有关设置cron任务运行的环境变量。SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),PATH变量定义了执行命令的路径。Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。如果MAILTO变量定义为空字符串(MAILTO=””),电子邮件不会被发送。执行命令或脚本时HOME变量可用来设置基目录。

  文件/etc/crontab中每行任务的描述格式如下:

  

  minute hour day month dayofweek command

  

  minute – 从0到59的整数

  hour – 从0到23的整数

  day – 从1到31的整数 (必须是指定月份的有效日期)

  month – 从1到12的整数 (或如Jan或Feb简写的月份)

  dayofweek – 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)

  command – 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)

  

  root表示以root用户身份来运行

  run-parts表示后面跟着的是一个文件夹,要执行的是该文件夹下的所有脚本

  对于以上各语句,星号(*)表示所有可用的值。例如*在指代month时表橡悄示每月执行(需要符合其他限制条件)该命令。

  整数间的连字号(-)表示整数裂颂列,例如1-4意思是整数1,2,3,4

  指定数值由逗号分开。如:3,4,6,8表示这四个指定整数。

  符号“/”指定步进设置。“/”表示步进值。如0-59/2定义每两分钟执行一次。步进值也可用星号表示。如*/3用来运行每三个月份运行指定任务。

  以“#”开头的为注释行,不会被执行。

  如果一个cron任务需要定期而不是按小时,天,周,月来执行,则需要添加/etc/cron.d目录。这个目录下的所有文件和文件/etc/crontab语法相同,查看样例:

  # record the memory usage of the system every monday

  # at 3:30AM in the file /tmp/meminfo

* * mon cat /proc/meminfo >> /tmp/meminfo

  # run custom scrīpt the first day of every month at 4:10AM

* * /root/scrīpts/backup.sh

  除了root用户之外的用户可以执行crontab配置计划任务。所有用户定义的crontab存储在目录/var/spool/cron下,任务会以创建者的身份被执行。要以特定用户创建一个crontab,先以该用户登录,执行命令crontab -e,系统会启动在VISUAL或者EDITOR中指定的的编辑软件编辑crontab。文件内容与/etc/crontab格式相同。示例如下:

  0 3 * * * /home/dbbackup/db1backup.sh backup

  0 4 * * * /home/dbbackup/db2backup.sh backup

  表示每天3点执行/home/dbbackup/db1backup.sh backup,4点执行/home/dbbackup/db2backup.sh backup,如果是每五分钟执行一次可改为:

  */5 * * * * /home/dbbackup/db2backup.sh backup

  当更改的crontab需要保存时,文件会保存在成如下文件/var/spool/cron/username。文件名会根据用户名而不同。

  cron服务会每分钟检查一次/etc/crontab、/etc/cron.d/、/var/spool/cron文件下的变更。如果发现变化,就会下载到存储器中。因此,即使crontab文件改变了,程序也不需要重新启动。推荐自定义的任务使用crontab -e命令添加,退出后用/etc/init.d/crond restart命令重启crond进程,官方文件说不用重启进程,但我遇到不重启无法运行任务的情况。开始不知道/etc/crontab文件中的run-parts是什么意思,直接把命令按照/etc/crontab的格式加上总是无法运行,后来才知道run-parts是指后面跟着的是文件夹。

linux定时每五分钟的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux定时每五分钟,Linux任务调度:实现每五分钟定时执行,crontab定时任务 和linux请求接口,linux 在screen下定时执行脚本的信息别忘了在本站进行查找喔。


数据运维技术 » Linux任务调度:实现每五分钟定时执行 (linux定时每五分钟)