C/C++教程

系统定时任务-at-cron

本文主要是介绍系统定时任务-at-cron,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

定时任务

1. at

1.1 介绍

at只能执行一次

  • 需要启动atd服务
  • 白名单:/etc/at.allow (系统默认没有这个文件)
  • 黑名单:/etc/at.deny
  • 如果两个文件都不存在,只有root用户可以访问at

1.2 配置

at 选项 时间

[root@localhost sh]# at now + 2minutes
at> /sh/hello.sh >>/tmp/hello.log
at> <EOT>
job 1 at Wed Jan  5 08:46:00 2022
[root@localhost sh]# date
Wed Jan  5 08:45:46 PST 2022
[root@localhost sh]# atq
1	Wed Jan  5 08:46:00 2022 a root
[root@localhost sh]# at -c 1

上面的配置表示2min之后执行并保存结果在/tmp/hello.log
其他命令:
at -c 工作号:查询指定定时任务
atrm 工作号:删除指定定时任务

at不常用,不再做解释

2. crontab循环执行定时任务

2.1 解释

  • 需要运行crond服务
  • 黑名单:/etc/cron.deny
  • 白名单:/etc/cron.allow

2.2 配置

2.2.1 命令行方式

crontab命令:
-e:编辑定时任务
-l:列出定时任务列表

编辑格式:
、 * * * * * 执行的任务

项目含义范围
第一个*一小时当中的第几分钟0-59
第二个*一天当中的第几个小时0-23
第三个*一个月当中的第几天1-31
第四个*一年当当中的第几月1-12
第五个*一周当中的星期几0-7(0和7都代表星期天)

一些特殊符号:

特殊符号含义
*代表任何时间,比如第一个*就代表一小时中,每分钟都执行一次
,代表不连续时间。比如:“0 8,10,12,18 * * *命令”,
它代表在每天的8点、10点、12点、18点的0分都执行一次
-代表连续时间,比如"10 10 * * 1-6"命令,代表在周一到周六的10点10分执行命令
*/n代表每隔多久执行一次。比如"*/10 * * * * 命令",代表每隔10分钟执行一次命令

举例:
10 * * * * 命令:在每个小时的第十分钟执行

2.2.2 注意事项

  • 六个选项均不能为空
  • 不能实现年和秒
  • 日期和星期不要同时出现
  • 最好都使用绝对路径

2.2.3 配置文件方式

  • 配置文件为止:/etc/crontab
  1 SHELL=/bin/bash
  2 PATH=/sbin:/bin:/usr/sbin:/usr/bin
  3 MAILTO=root
  4 
  5 # For details see man 4 crontabs
  6 
  7 # Example of job definition:
  8 # .---------------- minute (0 - 59)
  9 # |  .------------- hour (0 - 23)
 10 # |  |  .---------- day of month (1 - 31)
 11 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
 12 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
 13 # |  |  |  |  |
 14 # *  *  *  *  * user-name  command to be executed
 15 * * * * * root run-parts /sh/>>/tmp/123.txt

记住咯:

  • 格式必须如15行一样。
  • 运行的必须是一个目录,会定时执行目录里面的所有脚本
这篇关于系统定时任务-at-cron的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!