Crontab 详解

简介: Crontab 详解

linux 下定时执行任务的方法

在 LINUX 中你应该先输入 crontab -e,然后就会有个 vi 编辑界面,再输入 0 3 * * 1 /clearigame2 内容到里面 :wq 保存退出。

 

在 LINUX 中,周期执行的任务一般由 cron 这个守护进程来处理 [ps -ef|grep cron]。cron 读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。

cron 的配置文件称为 “crontab”,是 “cron table” 的简写。

一、cron 在 3 个地方查找配置文件:

1、/var/spool/cron/ 这个目录下存放的是每个用户包括 root 的 crontab 任务,每个任务以创建者的名字命名,比如 tom 建的 crontab 任务对应的文件就是 /var/spool/cron/tom。

一般一个用户最多只有一个 crontab 文件。


二、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的 crontab。


三、/etc/cron.d/ 这个目录用来存放任何要执行的 crontab 文件或脚本。

四、权限

crontab 权限问题到 /var/adm/cron/ 下一看,文件 cron.allow 和 cron.deny 是否存在

用法如下:

1、如果两个文件都不存在,则只有 root 用户才能使用 crontab 命令。

2、如果 cron.allow 存在但 cron.deny 不存在,则只有列在 cron.allow 文件里的用户才能使用 crontab 命令,如果 root 用户也不在里面,则 root 用户也不能使用 crontab。

3、如果 cron.allow 不存在,cron.deny 存在,则只有列在 cron.deny 文件里面的用户不能使用 crontab 命令,其它用户都能使用。

4、如果两个文件都存在,则列在 cron.allow 文件中而且没有列在 cron.deny 中的用户可以使用 crontab,如果两个文件中都有同一个用户,

以 cron.allow 文件里面是否有该用户为准,如果 cron.allow 中有该用户,则可以使用 crontab 命令。

 

在 crontab 文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。

   每个域之间使用空格或者制表符分隔。格式如下:

  minute hour day-of-month month-of-year day-of-week commands

   合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) commands(代表要执行的脚本)

   除了数字还有几个个特殊的符号就是 "*"、"/" 和 "-"、",",* 代表所有的取值范围内的数字,"/" 代表每的意思,"/5" 表示每 5 个单位,"-" 代表从某个数字到某个数字,"," 分开几个离散的数字。

 

基本格式 :

*****command

分  时  日  月  周  命令

第 1 列表示分钟 1~59 每分钟用 * 或者 */1 表示

第 2 列表示小时 1~23(0 表示 0 点)

第 3 列表示日期 1~31

第 4 列表示月份 1~12

第 5 列标识号星期 0~6(0 表示星期天)

第 6 列要运行的命令

 

crontab 文件的一些例子:

#每晚的 21:30 重启 apache。

30 21 * * * /usr/local/etc/rc.d/lighttpd restart

#每月 1、10、22 日

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

#每天早上 6 点 10 分

10 6 * * * date

#每两个小时

0 */2 * * * date

#晚上 11 点到早上 8 点之间每两个小时,早上 8 点

0 23-7/2,8 * * * date

#每个月的 4 号和每个礼拜的礼拜一到礼拜三的早上 11 点

0 11 4 * mon-wed date

#1 月份日早上 4 点

0 4 1 jan * date

 

很多时候,我们计划任务需要精确到秒来执行,根据以下方法,可以很容易地以秒执行任务。

以下方法将每 10 秒执行一次

 

* * * * * /bin/date >>/tmp/date.txt

* * * * * sleep 10;/bin/date >>/tmp/date.txt

* * * * * sleep 20; /bin/date >>/tmp/date.txt

* * * * * sleep 30; /bin/date >>/tmp/date.txt

* * * * * sleep 40; /bin/date >>/tmp/date.txt

* * * * * sleep 50; /bin/date >>/tmp/date.txt


注意如果用如果命令用到 % 的话需要用 \ 转义

00 01 * * * mysqldump -u root --password=passwd-d mustang > /root/backups/mustang_$(date +\%Y\%m\%d_\%H\%M\%S).sql

01 01 * * * mysqldump -u root --password=passwd-t mustang > /root/backups/mustang-table_$(date +\%Y\%m\%d_\%H\%M\%S).sql

相关文章
|
4月前
|
安全 Java 数据库
第16课:Spring Boot中集成 Shiro
第16课:Spring Boot中集成 Shiro
738 0
|
4月前
|
人工智能 安全 API
用Qwen Code,体验全新AI编程——高效模型接入首选ModelGate
Qwen Code 是通义千问推出的AI编程助手,支持自然语言编程与智能代码生成,大幅提升开发效率。结合 ModelGate,可实现多模型统一管理、安全调用,解决API切换、权限控制、稳定性等问题,是Claude Code的理想国产替代方案。
|
弹性计算 应用服务中间件 Linux
阿里云服务器开放端口完整图文教程
笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080、443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端口号,任然无法访问端口号对应的应用程序,后面了解到原来还需要设置云服务器的「安全组规则」,开放相应的端口权限,服务端的接口才能真正开放。
3993 1
阿里云服务器开放端口完整图文教程
|
8月前
|
弹性计算 运维 安全
不得不懂的阿里云账号体系
很多云参与者,并不了解云上账号体系,但了解云账号体系是云采用的基础,本文就带你全面了解阿里云账号体系,适用于所有云参与者。
996 3
|
编解码 Linux 开发者
初探FFplay:多媒体播放器的快速入门指南
【10月更文挑战第15天】FFplay是一个由FFmpeg项目提供的轻量级多媒体播放器,它使用FFmpeg库来解码和播放音频/视频流。FFplay非常适合那些想要深入了解多媒体编解码技术和音视频播放流程的开发者或爱好者。本文将介绍FFplay的基本功能、安装配置步骤以及如何使用命令行参数来播放多媒体文件。
1655 0
|
人工智能 API
通过API调用通义千问时出现DataInspectionFailed的解决办法(玄学版)
在使用qwen-plus API进行长文本翻译时,遇到了DataInspectionFailed错误,提示输入数据可能包含不当内容。尽管确认文本无敏感内容,但误判依然发生。通过将每个分段的字符数从1000降低到700,问题得以解决。建议在处理长文本时,减少每次请求的字符数以避免误判。
3875 6
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
1124 0
|
SQL 前端开发 Java
springboot项目中使用shiro实现用户登录以及权限的验证
这篇文章详细介绍了如何在Spring Boot项目中集成Apache Shiro框架来实现用户登录和权限验证,包括项目依赖配置、数据库连接、实体类定义、控制器、服务层、Mapper层以及前端页面的实现,并展示了实际效果和过滤器代码。
springboot项目中使用shiro实现用户登录以及权限的验证
|
负载均衡 Java 网络安全
gateway基本配置
gateway基本配置
3266 4
|
canal Kubernetes Ubuntu
kubespray安装高可用k8s集群
kubespray安装高可用k8s集群