前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【简记】Linux 计划任务 Crontab

【简记】Linux 计划任务 Crontab

作者头像
宋天伦
发布2020-07-22 10:24:49
3.2K0
发布2020-07-22 10:24:49
举报
文章被收录于专栏:fryteafrytea

cron 简介

cron 是 UNIX, SOLARIS,LINUX 下的一个十分有用的工具。通过 cron 脚本能使计划任务定期地在系统后台自动运行。

cron 命令

crontab -e  – 编辑该用户的 crontab,当指定 crontab 不存在时新建。

crontab -l – 列出该用户的 crontab。

crontab -r – 删除该用户的 crontab。

crontab -u<用户名称> – 指定要设定 crontab 的用户名称。

重启命令:

代码语言:javascript
复制
/etc/init.d/crond restart // 以路径方式重启
service crond restart // 以服务的方式重启

Linux Crontab 格式

Crontab 字段与允许的值 (Linux Crontab)

cron 实例

1、特定时间执行

cron 的基本用法是在特定的时间执行一项任务,如下是 6 月 10 上午 8:30 执行 Full backup shell script。 要注意的是时间字段采用的是 24 小时制,如果是下午 8 点,则改写为 20 点

30 08 10 06 * /home/ramesh/full-backup

30 – 第 30 分钟

08 – 早上 8 点

10 – 10 号

06 – 第 6 个月 (6 月)

* – 一周的任何一天

2、 安排多个实例(比如一天执行两次)

下面的增量备份脚本每天执行两次。

每天于 11:00, 16:00 执行,逗号两侧的时间都会执行。

00 11,16 * * * /home/ramesh/bin/incremental-backup

00 – 第 0 分钟 (每小时开时)

11,16 – 早上 11 点与下午 4 点

* – 每天

* – 每个月

* – 一周的任何一天

3、让任务只在特定时间执行(比如仅当工作日时执行)

下面这个例子是每天 9:00-16:00 检查数据库状态(包括周六)

00 09-18 * * * /home/ramesh/bin/check-db-status

00 – 第 0 分钟 (每小时开时)

09-18 – 9 点, 10 点, 11 点, 12 点, 下午 1 点, 下午 2 点, 下午 3 点, 下午 4 点, 下午 5 点, 下午 6 点

* – 每天

* – 每个月

* – 一周的任何一天

如果只想工作日执行此操作

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status

00 – 第 0 分钟 (每小时开时)

09-18 – 9 点, 10 点, 11 点, 12 点, 下午 1 点, 下午 2 点, 下午 3 点, 下午 4 点, 下午 5 点, 下午 6 点

* – 每天

* – 每个月

1-5 – 周一, 周二, 周三, 周四和周五 (工作日)

4、 安排每分钟都执行定时任务

理论情况下,没有每分钟都要执行的 shell,但下面这个例子,让我们更好的了解 crontab

代码语言:javascript
复制
* * * * * 命令
  • * 代表着所有可能取到的值,除了直接用 * 外,下面的几个例子也较为常用
  • 当指定 */5 在分钟字段,代表每五分钟。
  • 当指定 0-10/2 在分钟字段,代表在前十分钟的每两分钟

上面的例子对于其它四个字段同样试用

5、安排后台每十分钟执行定时任务

代码语言:javascript
复制
*/10 * * * * /home/ramesh/check-disk-space

有一些特殊的例子,可以用关键字替代上述五个字段 – reboot, midnight, yearly, hourly

Table: Cron special keywords and its meaning

6、每一年的第一分钟执行定时任务(@yearly)

下面的例子将在每一年的 1 月 1 日 0:00 执行

代码语言:javascript
复制
@yearly /home/ramesh/red-hat/bin/annual-maintenance

7、每月执行定时任务(@mothly)

下面的例子将在每月 1 日 0:00 执行

代码语言:javascript
复制
@monthly /home/ramesh/suse/bin/tape-backup

8、每天执行定时任务(@daily)

下面的例子将在每天 0:00 执行

代码语言:javascript
复制
@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"

9、每次重启时执行定时任务(@reboot)

代码语言:javascript
复制
@reboot CMD

10、如何用 mail 关键字禁止/重定向 cron 的邮件

默认情况下,crontab 将向布置定时任务的管理员发送邮件,如果想重定向此用户,添加并更新 MAIL

代码语言:javascript
复制
ramesh@dev-db$ crontab -l
MAIL="ramesh"

@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

如果不想任何人接收,则直接将 MAIL 置空

11、如何系秒每执行一个定时任务

无法安排每秒执行,因为最小处理单元是分钟,另一方面,没有什么理由让我们每秒都执行一任务

12、cron 中的 PATH 变量

上面的例子都是用绝对的路径

如果你想用相对的路径,设置环境变量可以在 crontab 增加

代码语言:javascript
复制
ramesh@dev-db$ crontab -l

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh

@yearly annual-maintenance
*/10 * * * * check-disk-space

13、从 cron 文件中定义 cron 任务

除了直接编辑外,你也可以先在一个文件中编辑好任务,再导入

代码语言:javascript
复制
ramesh@dev-db$ crontab -l
no crontab for ramesh

$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

ramesh@dev-db$ crontab cron-file.txt

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance

*/10 * * * * /home/ramesh/check-disk-space

应用时要注意,此操作会删除原有的cron任务

14、查看所有用户 cron 任务

代码语言:javascript
复制
$ cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}
30 08 10 06 * sar 1 10 > /root/sysstat/data.txt
30 6 */10 * * ls
no crontab for bin
no crontab for daemon
no crontab for adm
no crontab for lp
no crontab for sync
no crontab for shutdown
no crontab for halt
no crontab for mail
no crontab for operator
no crontab for games
no crontab for ftp
no crontab for nobody
no crontab for systemd-network
no crontab for dbus
no crontab for polkitd
no crontab for sshd
no crontab for postfix
no crontab for chrony
no crontab for ntp
no crontab for tcpdump
no crontab for nscd

参考文献

Author: Frytea

Title: 【简记】Linux 计划任务 Crontab

Link: https://cloud.tencent.com/developer/article/1666275

Copyright: This work by TL-Song is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • cron 简介
  • cron 命令
  • Linux Crontab 格式
  • cron 实例
    • 1、特定时间执行
      • 2、 安排多个实例(比如一天执行两次)
        • 3、让任务只在特定时间执行(比如仅当工作日时执行)
          • 4、 安排每分钟都执行定时任务
            • 5、安排后台每十分钟执行定时任务
              • 6、每一年的第一分钟执行定时任务(@yearly)
                • 7、每月执行定时任务(@mothly)
                  • 8、每天执行定时任务(@daily)
                    • 9、每次重启时执行定时任务(@reboot)
                      • 10、如何用 mail 关键字禁止/重定向 cron 的邮件
                        • 11、如何系秒每执行一个定时任务
                          • 12、cron 中的 PATH 变量
                            • 13、从 cron 文件中定义 cron 任务
                              • 14、查看所有用户 cron 任务
                              • 参考文献
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档