一份菜单

3d捕鱼达人 Crontab:15个很棒的Cron作业示例

经验丰富的3d捕鱼达人系统管理员知道在后台自动运行例行维护作业的重要性。

3d捕鱼达人 Cron实用程序是一种在持续的特定时间和/或日期安排例行后台作业的有效方法。

本文是正在进行的一部分 极客的生产力提示 系列。在本文中,让我们回顾15个很棒的crontab作业调度示例。

3d捕鱼达人 Crontab格式

最小 小时 DOM 蒙 陶氏 CMD
表:Crontab字段和允许的范围(3d捕鱼达人 Crontab语法)
领域 描述 允许值
最小 分钟场 0至59
小时 小时字段 0至23
DOM 每月的一天 1-31
月字段 1-12
陶氏 星期几 0-6
CMD 命令 任何要执行的命令。

1.在特定时间安排工作

cron的基本用法是在特定时间执行作业,如下所示。这将在以下位置执行完全备份外壳程序脚本(完全备份) 6月10日08:30 AM.

请注意,时间字段使用24小时格式。因此,对于上午8点使用8,对于晚上8点使用20。

30 08 10 06 * /home/ramesh/full-backup
  • 30 – 30th Minute
  • 08 – 08 AM
  • 10 – 10th Day
  • 06 – 6th Month (June)
  • * –一周的每一天

2.安排一个以上实例的工作(例如一天两次)

以下脚本每天进行两次增量备份。

本示例在每天的11:00和16:00执行指定的增量备份Shell脚本(incremental-backup)。字段中的逗号分隔值指定命令必须在所有提到的时间内执行。

00 11,16 * * * /home/ramesh/bin/incremental-backup
  • 00 –0分钟(每小时中的第一时间)
  • 11,16 – 11 AM and 4 PM
  • * – Every day
  • * – Every month
  • * –一周的每一天

3.在特定时间范围内安排工作(例如,仅在工作日)

如果您希望在特定时间范围内每小时安排一次作业,请使用以下内容。

每天在工作时间内进行Cron Job

本示例每天上午9点在工作时间(包括周末)检查数据库的状态– 6 p.m

00 09-18 * * * /home/ramesh/bin/check-db-status
  • 00 –0分钟(每小时中的第一时间)
  • 09-18 –上午9点,10点,11点,12点,1点,2点,3点,4点,5点,6点
  • * – Every day
  • * – Every month
  • * –一周的每一天

在工作时间的每个工作日进行Cron Job

本示例在工作时间上午9点的每个工作日(即星期六和星期日除外)检查数据库的状态– 6 p.m.

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点
  • * – Every day
  • * – Every month
  • 1-5 -周一,周二,周三,周四和周五(每个工作日)

4.如何查看Crontab条目?

查看当前登录用户’s Crontab entries

要查看您的crontab条目,请从您的unix帐户键入crontab -l,如下所示。

拉梅什@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[注意: This displays crontab of the current logged in user]

查看Root Crontab条目

以root用户(su–root),然后执行crontab -l,如下所示。

[email protected]# crontab -l
no crontab for root

Crontab如何:查看其他3d捕鱼达人用户’s Crontabs entries

要查看其他3d捕鱼达人用户的crontab条目,请登录root并使用 -u {用户名} -l 如下所示。

[email protected]# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status

5.如何编辑Crontab条目?

编辑当前登录用户’s Crontab entries

要编辑crontab条目,请使用crontab -e,如下所示。默认情况下,这将编辑当前登录用户crontab。

拉梅什@dev-db$ crontab -e
@yearly /home/ramesh/centos/bin/annual-maintenance
*/10 * * * * /home/ramesh/debian/bin/check-disk-space
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

[注意: This will open the crontab 科幻le in Vim editor for editing.
Please note cron created a temporary /tmp/crontab.XX... ]

当使用:wq保存上述临时文件时,它将保存crontab并显示以下消息,表明crontab已成功修改。

~
"crontab.XXXXyjWkHw" 2L, 83C written
crontab: installing new crontab

编辑Root Crontab条目

以root用户(su–root),然后执行crontab -e,如下所示。

[email protected]# crontab -e

编辑其他3d捕鱼达人用户’s Crontab文件条目

要编辑其他3d捕鱼达人用户的crontab条目,请登录root并使用 -u {用户名} -e 如下所示。

[email protected]# crontab -u sathiya -e
@monthly /home/sathiya/fedora/bin/monthly-backup
00 09-18 * * * /home/sathiya/ubuntu/bin/check-db-status
~
~
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

6.使用Cron安排每分钟的作业。

理想情况下,您可能不需要每分钟安排一次工作。但是,理解此示例将有助于您理解本文下面提到的其他示例。

* * * * * CMD

*表示所有可能的单位—即一年中的每一小时的每一分钟。除了直接使用*以外,您还会发现它在以下情况下非常有用。

  • 如果您在分钟字段中指定* / 5,则表示每5分钟一次。
  • 当您在分钟字段中指定0-10 / 2时,表示在前10分钟中每2分钟一次。
  • 因此,以上约定可用于所有其他4个字段。

7.每10分钟安排一次后台Cron作业。

如果要每10分钟检查一次磁盘空间,请使用以下内容。

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

一年中,它每10分钟执行一次指定的命令check-disk-space。但是您可能需要仅在办公时间执行命令,反之亦然。上面的示例显示了如何执行这些操作。

除了在5个字段中指定值外,我们还可以使用一个关键字来指定它,如下所述。

在某些特殊情况下,您可以使用@后跟一个关键字来代替上述5个字段—例如重启,午夜,每年,每小时。

表:Cron特殊关键字及其含义
关键词 当量
@每年 0 0 1 1 *
@日常 0 0 * * *
@hourly 0 * * * *
@重启 在启动时运行。

8.使用@yearly将工作安排在每年的第一分钟

如果您希望在每年的第一分钟执行工作,则可以使用 @每年 cron关键字如下所示。

这将在每年的1月1日00:00使用年维护shell脚本执行系统的年维护。

@每年 /home/ramesh/red-hat/bin/annual-maintenance

9.使用@monthly安排每个月的Cron作业开始

与上面的@yearly类似。但是每月使用一次执行命令 @每月 cron关键字。

这将在每个月1日的00:00执行Shell脚本磁带备份。

@每月 /home/ramesh/suse/bin/tape-backup

10.每天使用@daily安排后台作业

使用 @日常 cron关键字,它将每天使用00:00的cleanup-logs shell脚本进行每日日志文件清理。

@日常 /home/ramesh/arch-linux/bin/cleanup-logs "day started"

11.每次使用@reboot重启后如何执行3d捕鱼达人命令?

使用 @重启 cron关键字,它将在每次启动计算机后执行一次指定的命令。

@重启 CMD

12.如何使用MAIL关键字禁用/重定向Crontab邮件输出?

默认情况下,crontab将作业输出发送给计划作业的用户。如果要将输出重定向到特定用户,请在crontab中添加或更新MAIL变量,如下所示。

拉梅什@dev-db$ crontab -l
MAIL="拉梅什"

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

[注意: Crontab of the current logged in user with MAIL variable]


如果您希望不将邮件发送到任何地方,即要停止通过电子邮件发送crontab输出,请在crontab中添加或更新MAIL变量,如下所示。

MAIL=""

13.如何使用Crontab每秒执行一次3d捕鱼达人 Cron作业。

您无法安排每秒钟的cronjob。因为在cron中,您可以指定的最小单位是分钟。在典型情况下,我们大多数人没有理由每秒在系统中运行任何作业。

14.在Crontab中指定PATH变量

以上所有示例均指定了需要执行的3d捕鱼达人命令或shell脚本的绝对路径。

例如,如果只想指定tape-backup,则不必指定/ home / 拉梅什 / tape-backup,而是将路径/ home / 拉梅什添加到crontab中的PATH变量,如下所示。

拉梅什@dev-db$ crontab -l

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

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

[注意: Crontab of the current logged in user with PATH variable]

15.从Cron文件安装Crontab

除了直接编辑crontab文件之外,您还可以先将所有条目添加到cron文件中。在文件中包含所有thoese条目后,您可以将其上传或安装到cron中,如下所示。

拉梅什@dev-db$ crontab -l
no crontab for 拉梅什

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

[email protected]$ crontab cron-file.txt

[email protected]$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

注意: 这会将cron-file.txt安装到您的crontab中,这还将删除您的旧cron条目。因此,从cron-file.txt上传cron条目时请小心。

额外的Cron教程

很棒的3d捕鱼达人文章

以下是一些很棒的 15个例子 您可能会觉得有帮助的文章。

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个3d捕鱼达人 Sysadmin教程
  2. 50个最常用的3d捕鱼达人命令(包括示例)
  3. 排名前25位的最佳3d捕鱼达人性能监视和调试工具
  4. 妈妈,我找到了! 15个实用的3d捕鱼达人 Find命令示例
  5. 3d捕鱼达人 101 Hacks第二版电子书 3d捕鱼达人 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 42 评论… 加一 }

  • 普拉萨德 2014年12月30日,上午2:47

    这是很不错的…Thanks Ramesh.

  • 鲁查 2015年1月1日,下午12:20

    很棒的帖子!!非常有帮助。

  • 莱斯利·萨滕斯坦 2015年1月11日,下午8:52

    我有一个用于新系统设置的crontab框架。
    这里是。

    如果复制并粘贴,您会发现我在前几行的文件顶部添加了提醒。要正确查看它,请使用固定大小的字体。

    ############################################### #######
    #字符串的含义
    # —— ——-
    #@reboot在启动时运行一次。
    #@yearly每年运行一次,“0 0 1 1 *”.
    #@每年(与@yearly相同)
    #@monthly每月运行一次,“0 0 1 * *”.
    #@weekly每周运行一次,“0 0 * * 0”.
    #@daily每天运行一次,“0 0 * * *”.
    #@midnight(与@daily相同)
    #@hourly每小时运行一次,“0 * * * *”.
    #
    #mm hh Mday Mon Dow CMD#分钟,小时,月份-日DayofW CMD
    #………………………………….Minute of the hour
    #| …………………………..一天中的小时(0..23)
    #| |……………………。每月的一天1..31(星期一,星期二,星期三)
    #| | |……………..月(1.12)一月,二月。十二月
    #| | | |……..星期几0-6 7 == 0
    #| | | | | |要执行的命令
    #V V V V V V
    15 3 * * *查找$ HOME -name核心2>/ dev / null | xargs rm -f>/dev/null 2>&1
    0 11 12 1 * mailx leslie%生日快乐!%一个小时的午餐时间。
    15 10 * * 1,5 / usr / sbin / fstrim -a #trim for ssd
    * * * / 4 * *查找/ home / leslie -name核心2>/ dev / null | xargs rm -f / dev / null 2>&1

  • 莱斯利·萨滕斯坦 2015年1月14日,晚上10:06

    添加到上面,以在该月的最后一天运行作业。
    #在一个月的最后一天运行某些内容(/ root / test)
    36 14 28-31 * * [`date -d明日+%d` -eq’01’ ] && /root/test

  • 凯莉安 2015年1月21日,上午5:46

    您好@natarajan ::我有一个要求。.我们正在RHEL上使用weblogic APP Serevr 10.3.6。我想清除“tmp”我的(domians / servers / tmp)中存在的文件夹。不是系统tmp..so这么热,每天写一次cron作业cmd / script来清除tmp数据….tell me。在此先感谢…

  • 穆罕默德·诺曼 2015年2月11日,晚上11:08

    我认为平日的值应该是1-7而不是0-6,否则与3d捕鱼达人风格有所不同。我正在使用centos 6.x

    问候,
    努曼

  • 穆罕默德·诺曼 2015年2月11日,晚上11:12

    发布问题后才得到答案,我在这里回答自己的问题:

    0和7代表星期日。

    因此,从1到6的数字固定为星期一..星期六。

  • 维杰·库玛·康塔(Vijay Kumar Kanta) 2015年2月16日,上午4:45

    Murthy garu,该文章是3d捕鱼达人极客的精彩资源。

  • 普拉迪普 2015年3月3日,上午7:58

    如何测试cronjob是否正常工作。我已经设置了以下cronjob:
    * 03 * * * root / home / pi / SafetyLINK / Anchor / upgrade
    * 03 * * * root / home / pi / SafetyLINK / Anchor / 升级 / 升级
    “upgrade” is a 可执行文件 科幻le with permission 777.
    但是它没有执行。如何测试cronjob是否正常工作。

  • 阿米特·古普塔 2015年3月13日,下午1:28

    嗨,大家好…

    It’ awesome post….good job guys..
    我有以下查询…
    我创建了一个bash脚本(recycle.sh)…我想在隔天的23:00运行它
    有人可以为此共享crontab命令。

    你能帮我在这里吗..谢谢..

  • 艾莎 2015年5月12日,晚上8:15

    谢谢 !!!

  • 纳尼 2015年6月26日,下午5:03

    谁正在学习3d捕鱼达人作业调度基础知识的好材料
    如何执行一定时间的工作

    多谢兄弟

  • 莱斯利 2015年7月5日,上午9:59

    以下是有关每个隔日运行的一些提示

    日期功能Date“+%U” Returns the “week number” in the year, with Sunday as the 科幻rst day of the week. If you take the residue of the 周数 通过 division 通过 two, the job will run every second Sunday. There is 上ly 上e problem however, at year end, some years have 53 weeks. Therefore you have to modify the script to handle a 53 week year.
    这就是我的意思
    星期三= 2015-12-30陶氏= 3周数= 53
    周四日期= 2015-12-31陶氏= 4周数= 53
    星期五= 2016-01-01陶氏= 5周数= 53<< Not week 1
    星期六日期= 2016-01-02 dow2 = 6周数= 53
    以下是您修改的脚本

    #!/ bin / bash
    #此脚本的标题为Evenodd.sh
    # Replace 回声0 with your command for even weeks"
    # and Replace 回声1 with your command for odd weeks"
    #除2015年12月的最后一周外,此方法效果很好
    #2015年12月的最后一周是第53周。
    #
    Week=$(date +%U)
    ODD = $(expr $ Week%2)
    如果[$ ODD == 1];然后
    回声"1将第二行替换为您的第二周周日工作"
    /路径/到/你的/recycle.sh
    其他
    回声"0周为偶数,并在第二周的下周使用下一行"
    #path / to / your / recycle.sh
    科幻

    您的crontab条目将包含

    0 23 * *太阳oddeven.sh

  • 贾科莫 2015年7月6日,上午7:35

    你好你好吗?
    我有个问题。我想使用cron每小时在云上设置一个备份。但是,如果备份尚未完成上传文件并且启动了下一个备份,会发生什么?例如,在13:00的备份开始上传大文件,而在14:00仍在上传。但是这时将启动下一个备份。怎么了? Cron知道上一个命令尚未完成,还是无论如何都要启动它?
    谢谢ðŸ™,

  • 维卡斯 2015年7月10日,上午3:04

    大家好,我是纯Windows专家。我需要研究一些solaris服务器,并且需要将Cron作业详细信息发送给管理层,这些细节应该易于阅读,因此可以通过任何方式获取易于格式化的可读输出,例如:表格,html报告等。

  • 里兹万 2015年7月20日,上午1:59

    如何每5分钟使用cron运行一个php脚本

  • 加优 2015年7月24日,上午12:51

    @rizwan:
    每5分钟运行一次脚本-* / 5 * * * * PHPscriptpath

    @拉梅什–非常有用的帖子ðŸ™,

  • 肯尼·W 2015年7月28日,上午2:53

    大邮政,谢谢..

  • 玛莎 2015年9月8日,上午4:29

    嗨,我想自动创建计划的备份。我想使用cron。
    有人可以帮助我从哪里开始,我应该怎么做?

    谢谢。

  • 萨加尔 2015年10月17日,上午6:37

    真的很棒

  • 藤蔓 2015年10月20日,晚上10:33

    0 8 * * * / usr / local / bin / perl cust_bugs.pl

    应该是特定时间上午8点运行,但是’特定时间是凌晨1点
    我检查了服务器时间,该时间是根据特定时间设置的。
    怎么了

  • 杂种 2015年10月29日,下午6:20

    这必须是最好的linux帮助指南’ve seen 上 the webz.
    先生,辛苦了

  • 梅格 2015年12月4日,下午1:37

    非常有用的帖子。感谢你的付出!

  • uttam 2016年1月13日,上午1:58

    如何在每个月的最后一天运行crontab

  • 苏菲安 2016年2月4日,下午2:27

    您能一步一步给我看一下任何带有shell脚本的cron作业。我做了
    crontab -e
    * / 10 * * * * /tmp/test1.sh
    逃逸
    :wq!
    但是,它不起作用!
    您能告诉我所有行,这些行是成功运行crontab所必需的。我在网上看到必须放#!/ bin / sh,但是我不知道’t know where
    另外,我还必须执行[chmod + x /tmp/test1.sh

  • 莱斯利·萨滕斯坦(Leslie Satenstein) 2016年2月8日,下午7:55

    是的,对于test1.sh的chmod来说,test1.sh内容的读/写/执行参数是什么?另外,检查所有权

  • 托里 2016年2月21日,下午1:54

    您能告诉我我在此crontab中做错了什么吗?

    0 0 * * 2苏– ldmosley -c “VAR1=`date +%U`;VAR2=`expr $VAR1 % 2`; if [ $VAR2=1 ]; then Server-Health.sh >health_`date +%F_%T`.txt;科幻”

  • 莱斯利·萨滕斯坦(Leslie Satenstein) 2016年2月22日,晚上10:33

    几点

    您要以root用户身份进行调整,请使用root帐户创建crontab条目。

    su – asks for root’的密码。如果有没有终端的任务,则无法提供密码
    您必须包括ldmosley的路径。当它作为root运行时,ldmosley可能不在root中’s path statement.
    为什么不为所有bash脚本创建脚本并将脚本放入/ usr / local / bin
    这样,您的crontab行将更容易维护。

  • 曼吉特 2016年3月21日,上午3:30

    通常,我会跳过对文章创建者的感谢。这次不行。
    这是非常好表达的东西。如此简单,任何人都可以理解。感谢作者分享知识并帮助世界各地的人们

  • Satyanarayana Reddy Vakiti 2016年4月26日,下午12:53

    嗨,专家们,

    我需要安排“executable”jar的运行时间与文件被放到同一文件夹中的时间相同“executable jar”。您能否帮助我了解如何在3d捕鱼达人中进行操作。

    提前致谢。

    BR
    萨蒂亚

  • 弥耶 2016年5月3日,上午5:37

    嗨Ramesh,

    您能建议在这个时间如何创建cron-entry吗

    上午23:30至11:30

  • 拉梅什 2016年6月20日,上午12:12

    @yahya你可以像这样将cronjob设置为波纹管
    30 11-23 * * * / cmd

  • 莱斯利·萨滕斯坦(Leslie Satenstein) 2016年6月23日,下午7:33

    时间:30:23:30至11:30 am

    #23:30至午夜
    30 23 * * *
    #午夜至11:30 am
    30 0-11 * * *

  • 乐高 2016年7月6日,下午3:18

    你遗漏的一件事…如何在crontab中添加评论–除非作者假设阅读此书的每个人都知道将应用与Shell脚本相同的注释语法。

  • Yamkela Kutu 2017年1月10日,上午2:28

    非常有帮助,在10分钟的时间里学到了很多东西。谢谢

  • 阿普尔瓦 一月26,2017,10:13下午

    非常有用的帖子。非常感谢ðŸ™,非常感谢。

  • 凯拉什 2017年3月7日,上午4:15

    我有脚本文件–TEST-NFT3750-CALL-SCRIPT.sh

    crontab -e(包含以下内容)
    PATH = / usr / kerberos / bin:/ usr / local / bin:/ bin:/ usr / bin:/ usr / kerberos / bin:/ usr / local / bin:/ bin:/ usr / bin:/ sbin:/ usr / sbin:/ usr / local / sbin:/ home / ypokhrel / bin:/ home / ypokhrel
    (ypokhrel-是用户)

    * * * * * /home/ypokhrel/TEST-NFT3750-CALL-SCRIPT.sh>> /tmp/script.log

    这是行不通的。有人可以帮忙吗?

  • 唐卓别林 2017年4月12日,上午11:16

    cron能代表8月31日至9月4日这一日期范围的上午8:00开始时间吗?

  • 莱斯利·萨滕斯坦(Leslie Satenstein) 2017年5月11日,晚上7:50

    唐,答案是肯定的

    Cron处理可以在午夜至当天23.59之间启动的任务。
    如果您想与工作流一起渡过午夜,请在开始日期输入开始时间,并为要在下一个日期开始的工作创建第二个条目。如果你的“before midnight job”过了午夜时间,您必须等待它结束,您可以向其添加最后一步。最后一步可以触发在上一个作业结束后立即开始的作业。

  • 莱斯利·萨滕斯坦(Leslie Satenstein) 2017年5月11日,晚上7:58

    唐,请在8月8日上午再做一份工作,请阅读上面示例crontab清单的前几行。

    检查链接的第二个条目
    http://forums.fedoraforum.org/showthread.php?p=1697840#post1697840

  • 莱斯利·萨滕斯坦(Leslie Satenstein) 2017年5月11日,晚上9:03

    是否曾经想每隔一周运行一次?有什么简单的方法可以确保
    无论年份是多少,您的代码将始终每隔两周运行一次。
    下面的小脚本在奇数周返回1,在偶数周返回0,
    根据自1970年1月1日以来的周数

    ———————————————————————————————-
    #!/ bin / bash
    # return a 1 if the 周数 is odd
    # return a 0 if the 周数 is even
    # You can 加一 to 周数 to have
    #反向结果,如果星期是奇数,则返回0
    #
    #带有%s的3d捕鱼达人 / Unix日期函数返回
    #自1970年1月1日午夜(Unix的诞生)以来的秒数
    #作者:Leslie S 2017年5月11日
    #
    s = $(date +%s)自1970年1月1日以来的#秒
    secsperweek = 604800#60 * 60 * 24 * 7
    两个= 2#用来获取余数
    #
    week = $((($ s / $ secsperweek))#week自1970年1月1日起
    #回声“自1970年1月1日起的周数”
    evenodd = $((($ weeks%$ two))
    如果[$((evenodd == 1))];然后
    回声“Weeknumber是奇数,返回$ evenodd”
    其他
    回声“周数是偶数,返回0”
    科幻
    退出$ evenodd
    ———————————————————————
    上面计算2017/05/11的1(奇数)

    对于每两周运行一次的作业,将以上内容用作crontab中的条目。

  • 肯定的 二月4,2019,4:53上午

    如何在特定的时间开始每6小时编写一个cron表达式。
    假设我想从9.00 am开始,它将从9..00 am开始每6个小时安排一次

发表评论