`
zccst
  • 浏览: 3295517 次
  • 性别: 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

    linux Crontab 使用基础教程.docx

    linux定时器crontab的使用教程

    主要介绍了linux定时器crontab的使用教程,需要的朋友可以参考下

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

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

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

    利用Crontab实现对Oracle数据库的定时备份,很实用的一个教程!

    crontab定时器

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

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

    摘要: rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备份,我们还可以把它作为不同主机网络备份工具之用。本文主要讲述的是如何自架rsync服务器,以实现文件传输、备份和镜像。...

    【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讲.进程的介绍和管理.

    crontab定时器(包括执行shell)

    今天在网上看到这篇不错的教程,是介绍CronTab的,写的很清楚.转载过来,做个分享.

    韩顺平.linux视频教程和PPT

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

    linux shell 编程教程

    linux shell编程 教程大全 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 ...

    一周学会Linux实战视频教程

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix...

    LINUX 24学时教程

    18.2 使用crontab命令安排周期性的 备忘录提示 292 18.3 使用X11的ical客户程序建立约会 备忘录提示 294 18.4 使用emacs查看日历和管理约会 297 18.5 使用knote客户程序设置报时钟 299 18.6 课时小结 299 18.7 专家...

    2018最新高清大数据协作框架全套视频教程(Sqoop,Flume,Oozie,WEB工具Hue)

    3.02_02_03_02 Linux Crontab调度讲解 网页.mp4 3.02_02_03_03 大数据Hadoop常用三种调度框架讲解 网页.mp4 3.02_02_03_04 Oozie 功能架构及三大Server讲解 网页.mp4 3.02_02_03_05 Oozie安装部署讲解一 网页.mp4

    linux离线断网模式下安装crontabs

    linux离线断网模式下安装crontabs,带教程和对应的rpm文件

    基于大数据分析与可视化的疫情信息发布平台源码+项目部署教程.zip

    基于大数据分析与可视化的疫情信息发布平台源码+项目部署教程.zip 基于大数据分析与可视化的疫情信息发布平台源码+项目部署教程.zip 基于大数据分析与可视化的疫情信息发布平台源码+项目部署教程.zip 1、该资源内...

    shell教程-30章,下了之后会让你大吃一惊,相当好

    1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的...

    webgame开发简明教程

    这篇是挺实用的教程, 不过有些观点还是值得商榷 我觉得服务器定时器用计划任务调用脚本就可以实现,比如linux下用crontab定时执行某个php脚本,更新数据就可以。 研究所有点缺乏资料啊。讨论的问题怪怪的。只有很少...

    ofelia:泊坞窗作业调度程序(泊坞窗又名crontab)

    有许多解决方案可用:准备好使用容器化的crons ,命令的包装等,但最终,简单的任务变得复杂。 如何? Ofelia的主要功能是可以直接在Docker容器上执行命令的功能。 使用Docker的API Ofelia可以模拟的行为,从而...

Global site tag (gtag.js) - Google Analytics