`
zccst
  • 浏览: 3310521 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

crontab使用教程

 
阅读更多
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。虽然Cron是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start   //启动服务
/sbin/service crond stop    //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload  //重新载入配置

也可以将这个服务在系统启动的时候自动启动,在/etc/rc.d/rc.local这个脚本的末尾加上:/sbin/service crond start

在Fedora或Redhat等以RPM包管理的系统中:
[root@localhost ~]# /etc/init.d/crond start
[root@localhost ~]# /etc/init.d/crond stop
[root@localhost ~]# /etc/init.d/crond restart

需要记住的几个重启命令:
/etc/rc.d/init.d/crond restart
/sbin/service crond restart

现在Cron这个服务已经在进程里面了,我们就可以用这个服务了。

1、直接用crontab命令编辑
cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务:

  crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
  crontab -l //列出当前用户cron服务的详细内容
  crontab -r //删除当前用户的cron服务  -i 删除前给提示
  crontab -e //编辑当前用户的cron服务

比如说root查看自己的cron设置:crontab -u root -l。其实可以直接crontab -l。

对于root而言,管理其他用户的crontab如下,即通过-u username指定某个用户的crontab
root想查看fred的cron:crontab -u fred -l 。
root想编辑fred的cron:crontab -u fred -e 。
root想删除fred的cron:crontab -u fred -r 。

对于普通用户fred自己而言
想查看自己的cron:crontab -l 。
想编辑自己的cron:crontab -e 。
想删除自己的cron:crontab -r 。

由于查看和删除比较简单,下面重点说说编辑模式,编辑的内容有一些格式和约定,输入:crontab -u root -e
进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:
字段 说明
1 分钟(0-59)
2 小时(2-24)
3 日期(1-31)
4 月份(1-12;或英文缩写Jan、Feb等)
5 周几(0-6,0为周日;或单词缩写Sun、Mon等)
6 用户名(执行命令时以此用户的身份)
7 要执行的命令(路径)
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。
以下举几个例子说明问题:
12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
#这条语句将在每天的凌晨3点12分(03:12)运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。>> /dev/null 2>&1 表示把所有标准输出发送到 /dev/null(linux的回收站),把标准错误输出(2)发送到和标准输出(1)同样的地方(即 /dev/null)。运行这行命令将不会产生任何输出。

这条语句可以变得稍微复杂一点:

30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

#它将在6月13日周一的15:30运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。

以下语句可以达到同样的效果:

30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

如果你想以用户joey的身份每小时的第15分钟运行某个程序,可以使用:

15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

其中的星号(*)是通配符,表示cron将忽略这个字段。

如果你想每两小时就运行某个程序,可以在小时字段里使用 */2。它将会在2点,4点,6点……22点,24点运行。具体语句如下:

0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1

cron语句中还可以使用逗号(,)来指定多个时间。例如你想在每小时的15分和30分运行某个程序,可以在分钟字段使用 15,30:

15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

如果你想在每月的第一周(即1号到7号)每天的指定时间运行某个程序,可以在日期字段使用 1-7:

15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1

这条语句将在每月的第1-7日每两小时的15分和30分(02:15,02:30……22: 15,22:30等)运行 /usr/bin/somecommand 命令。

如果你想在每天的16:18执行一个脚本集合,可以把所有要执行的脚本放到一个目录中(如 /home/username/cron),可以使用:

18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1

如果你想保存某个程序的输出结果, 可以把 >> /dev/null 2>&1 替换为 >> /home/user/somecommand.log 2>&1 。


00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。


每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。


2、编辑/etc/crontab 文件配置cron

cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用 cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root      //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号

HOME=/           //使用者运行的路径,这里是根目录

# run-parts

01 * * * * root run-parts /etc/cron.hourly   //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily    //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly   //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly  //每月去执行/etc/cron.monthly内的脚本

大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。


最后,关于cron使用权限。
cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。

注:这两个文件可能在/usr/lib/cron/下。也可能在/etc下,根据linux系统不同而不同。
我的系统是Redhat系列的,这两个文件存在/etc下。
分享到:
评论

相关推荐

    linux Crontab 使用基础教程.docx

    查看当前用户的crontab使用`crontab -l`,编辑使用`crontab -e`,删除使用`crontab -r`。若要操作其他用户的crontab,可以添加`-uUSERNAME`选项。 Crontab文件的语法结构包括六个字段,分别代表: 1. 分钟(0-59) ...

    linux定时器crontab的使用教程

    这篇教程将详细介绍如何使用crontab进行定时任务的设置。 首先,crontab命令用于管理和编辑用户的定时任务列表。基本语法如下: 1. `crontab -u <username> -e`:编辑指定用户(如root)的crontab文件,通常会使用...

    Unix Crontab

    `crontab`命令的使用通常涉及编辑、查看和删除用户的cron作业。例如: - `crontab -e`:编辑当前用户的cron作业。 - `crontab -l`:列出当前用户的cron作业。 - `crontab -r`:删除当前用户的cron作业。 **2. `...

    unix C语言crontab、makefile资料

    - `用crontab命令完成SCO UNIX系统中大批量数据的自 - 命令行使用小技巧与SHELL编程 - 中国Linux公社论坛.htm` 讨论了如何使用crontab处理大规模数据任务。 - `C语言(通讯录)_隐形人laigo的世界.htm` 可能是关于...

    利用Crontab实现对Oracle数据库的定时备份.rar

    本教程将详细阐述如何利用Crontab来实现Oracle数据库的定时备份。 首先,我们需要理解Oracle数据库的备份类型。Oracle支持多种备份方式,如物理备份(如使用RMAN工具)和逻辑备份(如导出/导入)。在本教程中,我们...

    thinkphp 5.1 定时任务,Crontab 计划任务-think-cron.zip

    本教程将深入探讨如何在ThinkPHP 5.1中配置和使用Crontab计划任务,即think-cron功能。 一、ThinkPHP 5.1中的定时任务 在ThinkPHP 5.1中,定时任务通常被称为计划任务,它们允许开发者设置定期执行的任务,而无需...

    易语言 Crontab 定时任务执行模块 v1.2 支持单位秒 也可做计时器源码

    Crontab 是一种在 Linux 系统中广泛使用的定时任务管理机制,用于按照预设的时间表执行命令或脚本。这个易语言 Crontab 定时任务执行模块 v1.2 则是将这种功能移植到了易语言环境中,让开发者能够方便地在易语言程序...

    利用rsync+crontab实现Linux的定时增量备份

    【rsync介绍】 rsync是一款强大的文件同步工具,它基于著名的...而与crontab的结合使用,进一步提升了备份的自动化程度,降低了管理和维护成本。因此,理解并掌握rsync及其配置是每个Linux系统管理员必备的技能之一。

    django-crontab 定时执行任务方法的实现

    这个其实可以使用linux 自带了crontab实现,但是毕竟是django 开发。想着不知道有没有方法可以从django 中实现。 简单搜索了下,这方面的方法确实不少。 由于看到celery 插件学习曲线较大,这个小的需求就使用django...

    crontab-master

    这个 `crontab-master` 压缩包可能包含了关于 `crontab` 使用的示例、教程或者相关脚本。 ### 一、Crontab 的工作原理 `crond` 是 Linux 系统中的守护进程,负责解析并执行 `crontab` 文件中的任务。每个用户都有...

    crontab定时器

    crontab定时器 使用方法和课堂笔记 手把手教学,包括crontab命令参数和介绍,使用方法和例子,实战教程,存放位置和用户文件等,后续会努力上传其他文件和linux运维相关笔记

    解析Ubuntu下crontab命令的用法

    要使用`crontab`,首先需要编辑crontab文件。通过输入`crontab -e`命令,系统会打开默认的文本编辑器(如vim)让你编辑该文件。如果你希望更换编辑器,可以使用`select-editor`命令进行设置。 2. **crontab文件...

    【crontab】定时自动完成Gitee、GitHub的代码提交(Windows和Linux)

    使用教程 : 1. 在GitHub或Gitee新建代码仓库,将文件.sh/.bat 和 .txt文件push到代码仓库; 2. 在Windows或Linux系统执行.bat或.sh文件,即可完成100次的提交; 3. 通过数据库的数据表配合脚本使用,完成指定日期...

    Linux教程视频.rar

    │ linux视频教程第00讲.开山篇.wmv,网盘文件永久连接 │ linux视频教程第01讲.基础介绍.wmv │ linux视频教程第02讲.... linux视频教程第14讲.crontab详解 linux视频教程第15讲.进程的介绍和管理.

    cacti使用教程

    在Linux系统上,你可以使用`yum`命令安装这些基础组件: 1. 安装MySQL服务器和开发库,以支持Cacti的数据存储: ``` yum -y install mysql mysql-server mysql-devel ``` 2. 安装Apache Web服务器: ``` yum -...

    韩顺平.linux视频教程和PPT

    韩顺平.linux视频教程第14讲.crontab详解.wmv 58 MB 韩顺平.linux视频教程第15讲.进程的介绍和管理.wmv 46 MB 韩顺平.linux视频教程第16讲.top详解.设.间.监控网络状态.wmv 50 MB 韩顺平.linux视频教程第17讲....

    Swoole入门教程及文档

    Swoole入门教程及文档 ...下面是Swoole入门教程及文档的知识点总结: 一、环境搭建及扩展安装 * 环境搭建:Swoole需要PHP环境,推荐从源码...本文档旨在帮助新手快速掌握Swoole的使用,为大家提供了详细的教程和文档。

Global site tag (gtag.js) - Google Analytics