`
xf986321
  • 浏览: 163959 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用crontab定制自己的定时任务

阅读更多

命令简介


crontab-操作每个用户的守护程序和该执行的时间表。


部分参数说明

crontab file [-u user]-用指定的文件替代目前的crontab。

crontab-[-u user]-用标准输入替代目前的crontab.

crontab-1[user]-列出用户目前的crontab.

crontab-e[user]-编辑用户目前的crontab.

crontab-d[user]-删除用户目前的crontab.

crontab-c dir- 指定crontab的目录。

crontab文件的格式:M H D m d cmd.

M: 分钟(0-59)。

H:小时(0-23)。

D:天(1-31)。

m: 月(1-12)。

d: 一星期内的天(0~6,0为星期天)。

cmd要运行的程序,程序被送入sh执行,这个shell只有USERHOMESHELL这三个环境变量。

所以就在自己的crontab -e 中find mv cp 操作是被静止的

你可以让他执行一个脚本,让他自动执行一个.sh文件

15 * * * * /home/zhifeifeng/Desktop/back.sh

mkdir -p /home/zhifeifeng/Desktop/data_back mkdir -p /home/zhifeifeng/Desktop/data_back/`date -I` cp /home/zhifeifeng/Desktop/data/report_`date +%H` /home/zhifeifeng/Desktop/data_back/`date -I`


注意这里我们用到了 `date XXX`表示一个当前日期的东西

mv oldfile `date +%Y-%m-%d` mv oldfile `date -I`



cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

1.crontab命令选项:
-u指定一个用户,
-l列出某个用户的任务计划,
-r删除某个用户的任务,
-e编辑某个用户的任务
2.cron文件语法:
分     小时   日       月       星期     命令
0-59   0-23   1-31   1-12     0-6     command     (取值范围,0表示周日一般一行对应一个任务)

3.记住几个特殊符号的含义:
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字

任务调度设置文件的写法
可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件
具体格式如下:
Minute Hour Day Month Dayofweek   command
分钟     小时   天     月       天每星期       命令
每个字段代表的含义如下:
Minute             每个小时的第几分钟执行该任务
Hour               每天的第几个小时执行该任务
Day                 每月的第几天执行该任务
Month             每年的第几个月执行该任务
DayOfWeek     每周的第几天执行该任务
Command       指定要执行的程序
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
举例如下:
5       *       *           *     *     ls             指定每小时的第5分钟执行一次ls命令
30     5       *           *     *     ls             指定每天的 5:30 执行ls命令
30     7       8         *     *     ls             指定每月8号的7:30分执行ls命令
30     5       8         6     *     ls             指定每年的6月8日5:30执行ls命令
30     6       *           *     0     ls             指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30     3     10,20     *     *     ls     每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25     8-11 *           *     *     ls       每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15   *       *           *     *     ls         每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30   6     */10         *     *     ls       每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]
每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件
50   7       *             *     *     root     run-parts     /etc/cron.daily   [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。

添加后保存的路径是 /var/spool/cron,可以用vi查看修改,这个不难

 

 

一句话总结crontab(指这个应用、这个机制)的作用:”run this command at this time on this day”,在指定的日期、时间,运行指定的命令。下面是Linux 上crontab手册中的知识点,小结如下:

1. crontab文件“正式行”的开始

空行、以空格或者“tab”开行的行,被cron(daemon)忽略。

以#开始的行,作为注释被cron(daemon)忽略。

“注释”不允许与“命令”放在同一行(作为命令的注释),会被作为“第六段”,被cron(daemon)执行。

同样的,也不能放在设置环境变量的同一行。

2. 在crontab文件中指定环境变量

设置变量使用

name = value

这样的格式,”=”号左右的空格不是必须的。

几个变量默认已经被设置,比如:

SHELL=/bin/sh
HOEM=/home/nnix
LOGNAME=nnix

其中SHELL和HOME可以重新设定,LOGNAME则不可(大概跟确定crontab文件的位置有关)。

默认,crontab会把执行的输出发送给crontab的所有者,除非重新设定变量:

MAILTO=other_or_email

另外,当crontab发送输入时的邮件编码,可以通过设置变量 CONTENT_TYPE 和 CONTENT_TRANSFER_ENCODING 来使用正确的编码来发送邮件。

3. crontab 文件的分段

依次分别是

  • 分(0-59)
  • 时(0-23)
  • 日(1-31)
  • 月(1-23,或者英文名)
  • 周(0-7,或者英文名,0和7均表示周日)
  • 要执行的内容   

4. 前五段:时间和日期

1)表示任意:* 号表示 “任意”(first-last)。

2)指定数字,表示指定的时间。

3)指定段,表示“开始-结束”内包含的数:比如3-6,表示3,4,5,6

4)指定列表:比如 “1,2,3,4″,”0-4,8-12″

5)指定“步长”:8-14/2 表示8,10,12,14

5. 模糊的第六段:

1)除去前五段,从第六段开始到换行符或者“%”为止,为要执行的命令。

2)默认第六段将被/bin/sh执行,除非在crontab文件中指定了非/bin/sh的SHELL变量。

3)第六段中的”%”号,除非前面加”\”号转交,否则,“%”号将结束命令行、换行的意义,并且其后的内容会被做为标准输入发送给前面的命令。

6. 冲突的逻辑

日期可以用月限定,也可以用“星期”指定,如果两个段有冲突(比如这两段不同时为“*”),那么,第六段的命令将在匹配任何一个的情况下运行,比如

“30 4 1,15 * 5″,将在每月的1号和15号 加 每个周五,上午4:30运行。

7. crontab文件中的神密符号“%”

可能会遇到的一个问题是,在第六段中需要使用date生成日志文件名,比如:

0   4   *   *   *   /opt/cron/mysql_dump.sh    > /srv/logs/`date +%y-%m-%d`.dump.log

这时会发现crontab怎么也不运行这个mysql_dump.sh,也看不到有日志生成。这是因为在crontab文件中,”%”是有特殊含义的。假如不需要“%”的特殊作用,需要使用转义符转义。上面应该写成:

0   4   *   *   *   /opt/cron/mysql_dump.sh    > /srv/logs/`date +\%y-\%m-\%d`.dump.log

“%”在crontab文件中,有“结束命令行”、“换行”、“重定向”的作用,比如:

0  22  * * 1-5  mail -s “It’s 10:00 pm” joe%Joe,%%Where are your kids?%

将会在周一至周五的22:00发送一分内容为:

Joe,<换行>
<换行>
Where are your kids?<换行>

8. 不能理解的特殊用法

       @reboot    :    Run once, at startup.

分享到:
评论

相关推荐

    linux采用crontab定时跑任务.docx

    用户可以使用`crontab`命令来定制个人的定时任务。这些任务的定义保存在`/var/spool/cron`目录下,以用户的用户名命名。用户权限可以通过`/etc/cron.deny`和`/etc/cron.allow`文件进行控制,前者列出禁止使用`...

    定时任务 定时关机

    为了充分利用这些资源,用户需要解压文件,查看其中的内容,并按照指导设置自己的定时任务。这可能涉及到阅读文档、理解脚本逻辑、编辑配置文件等步骤。 总之,定时任务是提高工作和生活效率的有效工具,它能够帮助...

    Linux使用Crontab定时访问某个路由地址的方法

    前言 实现Linux定时任务有:...首先利用linux的Crontab命令创建定时任务,然后结合curl实现定时访问某个路由地址,下面来看如何操作。 1、先通过 crontab -e 创建定时任务 [root@iz8vb4z6xe72mysmicu1vpz ~]# crontab

    树莓派+cron定时执行任务

    每个用户都可以有自己的`crontab`文件,这使得不同用户能够独立地管理自己的定时任务。 - **crontab命令**:用于编辑与管理用户的定时任务列表。通过`crontab -e`命令可以编辑当前用户的定时任务列表。 - **/etc/...

    Go开发的crontab 代替linux原生crontab.zip

    在嵌入式Linux开发中,经常需要进行定时任务的管理,传统的解决方案是利用Linux的原生`crontab`工具。然而,在某些情况下,如在资源有限的嵌入式设备上,可能需要更轻量级的替代方案。"Go开发的crontab 代替linux...

    APScheduler基于Quartz的一个Python定时任务框架

    基于Quartz的设计理念,APScheduler提供了多种调度策略,包括基于日期、固定时间间隔(例如每小时、每天)以及类似于Unix crontab的表达式,这使得它在处理定时任务时具有高度的定制性和灵活性。 1. **基于日期的...

    仿制Linux中定时任务Crontab v1.0-易语言

    通过"仿制Linux中定时任务Crontab v1.0",易语言用户能够利用这个模块来创建和管理定时任务,无需深入理解Linux的命令行操作。 Crontab的语法结构是其核心组成部分,描述中的格式说明了这一点: - `[秒]`:范围为0...

    Linux定时任务Crontab的使用方法

    Crontab命令允许用户定义自己的定时任务,这非常适合自动化日常维护工作,如备份、日志清理等。 一、`crond`服务介绍 `crond`是Linux系统中的一个关键组件,负责执行基于时间的计划任务。默认情况下,Linux系统会...

    Linux定时任务之我见

    这篇博客"Linux定时任务之我见"可能深入探讨了如何利用Linux的cron机制来设置和管理这些任务。cron是一个内置的时间调度器,允许用户按照预定义的时间间隔运行命令或者脚本。 在Linux中,定时任务通常用于自动备份...

    自动运行任务计划

    在Linux的Cron服务中,配置定时任务的过程有所不同。你需要编辑crontab文件,添加一行或多行以定义任务。每行代表一个任务,包含时间字段和要执行的命令。例如,如果“自动运行任务计划.exe”在Linux环境中等效为一...

    celery+ rabbitMq + python linux 下 例子 crontab例子

    标题中的“celery+ rabbitMq + python linux 下 例子 crontab例子”涉及的是一个在Linux环境下使用Python、Celery以及RabbitMQ构建任务调度系统,并结合crontab进行定时任务设置的示例。接下来,我们将深入探讨这些...

    swoole-crontab-master.基于swoole的定时器程序,支持秒级处理

    `swoole-crontab-master`这个项目利用了Swoole的定时器功能来实现类似Linux crontab的定时任务管理。在Swoole中,可以通过`Swoole\Timer`类设置定时器,这个类提供了`tick`和`after`两个方法,分别用于创建周期性和...

    基于go实现的定时执行器

    在IT行业中,定时任务执行器是许多系统和应用不可或缺的一部分,它们允许我们按照预设的时间表执行特定的...此外,它的可配置性使得我们可以根据实际需求灵活定制定时任务的执行策略,提高了系统的可扩展性和灵活性。

    linux下oracle定时备份

    接下来,利用`crontab`命令来定制定时任务。`crontab -e`会打开一个编辑器,允许你添加、修改或删除定时任务。`crontab`文件的格式包含六个域,分别是分钟、小时、日期、月份、星期和命令。例如,下面是一个简单的...

    Python实现定时任务

    使用 APScheduler 可以实现更复杂和定制化的定时任务。 #### 5. 使用 Windows 的定时任务 对于 Windows 平台,还可以考虑将 Python 脚本打包成 EXE 文件,并利用 Windows 的任务计划程序来定时执行这些脚本。这种...

    go-crontab:使用Go做一个分布式任务调度系统

    这是一个用Go编写的库,实现了强大的定时任务调度器,它允许开发者使用Cron表达式定义任务的执行时间。Cron表达式是一种灵活的时间调度语法,可以精确地控制任务的执行频率和时刻。通过go-crontab,我们可以轻松地为...

    cronCreator.zip

    cronCreator.zip是一个包含Java实现的定时任务工具,它主要用于生成基于crontab语法的定时计划。crontab是Unix/Linux...开发者不仅可以利用它创建复杂的定时任务,还可以根据项目的实际需求进行定制,提升开发效率。

    linux下定时执行脚本

    它的配置文件是`crontab`,用户可以通过编辑`crontab`文件来定制自己的定时任务。 要创建定时任务,首先需要打开终端并输入`crontab -e`命令,这会打开一个编辑器(通常是vi或vim)。在编辑器中,你可以按照特定的...

    定时开起和关闭酷狗或其它程进程

    在Linux上,编辑`crontab -e`来添加定时任务,如: ```bash 0 20 * * * /path/to/your/script.sh ``` 这里的`script.sh`是用shell脚本编写的,用于关闭酷狗进程(例如使用`pkill`或`killall`命令)。 除了系统...

    Django ORM框架的定时任务如何使用详解

    当涉及到定时任务时,如果能够直接利用Django的ORM框架,不仅能够简化代码,还能充分利用已有的模型、日志框架以及配置等资源,从而提高开发效率和代码质量。 #### 实现步骤 ##### 1. 创建自定义命令 Django提供...

Global site tag (gtag.js) - Google Analytics