当前位置: 首页 > 编程日记 > 正文

linux 定时任务crond

1.定时任务crond

1.1 crond是什么
crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件。特殊需求:(秒级别)crond服务就无法搞定了,一般工作中写脚本守护进程执行。
为什么要使用crond定时任务: linux系统的定时任务crond,相当于我们平时生活中的闹钟的功能。可以满足周期性执行任务的需求。不同系统的定时任务和种类
windows 7 系统的定时任务: 开始→所有程序→附件→系统工具→选择任务计划程序

linux系统的定时任务: linux系统中定时任务调度的工作可以分为以下两个情况:

① linux系统自身定期执行的任务工作:系统周期性执行的任务工作,如轮询系统日志,备份系统数据,清理系统缓存等。

[root@wen cron]# ll /var/log/messages*
-rw-------  1 root root  501112 Oct 19 19:39 /var/log/messages
-rw-------. 1 root root  463457 Sep 27 04:18 /var/log/messages-20170927
-rw-------. 1 root root  927028 Oct  1 04:20 /var/log/messages-20171001
-rw-------  1 root root 1578109 Oct  8 15:32 /var/log/messages-20171008
-rw-------  1 root root 1672249 Oct 15 09:40 /var/log/messages-20171015
[root@wen cron]# ll /var/log/secure*
-rw-------  1 root root  6406 Oct 19 15:06 /var/log/secure
-rw-------. 1 root root 10927 Sep 27 04:08 /var/log/secure-20170927
-rw-------. 1 root root 11170 Oct  1 03:46 /var/log/secure-20171001
-rw-------  1 root root 15795 Oct  8 14:39 /var/log/secure-20171008
-rw-------  1 root root 22298 Oct 15 08:28 /var/log/secure-20171015
[root@wen cron]# cd /etc/logrotate.d
[root@wen logrotate.d]# ls
dracut  ppp  psacct  syslog  yum
[root@wen logrotate.d]# cat syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{sharedscriptspostrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || trueendscript
}
不要往下面文件放定时任务,不规范
[root@wen logrotate.d]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/# For details see man 4 crontabs# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
---
[root@wen logrotate.d]# ll /etc/|grep cron
-rw-------.  1 root root    541 Mar 30  2015 anacrontab
drwxr-xr-x.  2 root root   4096 Aug 30 05:53 cron.d
drwxr-xr-x.  2 root root   4096 Aug 30 05:54 cron.daily
-rw-------.  1 root root      0 Mar 30  2015 cron.deny
drwxr-xr-x.  2 root root   4096 Aug 30 05:51 cron.hourly
drwxr-xr-x.  2 root root   4096 Aug 30 05:53 cron.monthly
drwxr-xr-x.  2 root root   4096 Sep 27  2011 cron.weekly
-rw-r--r--.  1 root root    457 Sep 27  2011 crontab
View Code

② 用户执行的任务工作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步,每天晚上0点备份站点数据及数据库数据,一般这些工作需要由每个用户自行设置才行。

[root@wen log]# crontab -l
*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1定时任务crond使用说明
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
usage:        crontab [-u user] filecrontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1002)-e        (edit user's crontab)
-l        (list user's crontab)
-r        (delete user's crontab)
-i        (prompt before deleting user's crontab)
-s        (selinux context)

 

指令说明

  通过crontab我们可以在固定的间隔时间执行指定的系统指令或script脚本。时间间隔的单位是分钟,小时,日,月,周及以上的任意组合(注意:日和周不要组合 

使用者权限及定时任务文件

文件

说明

/etc/cron.deny

该文件中所列用户不允许使用crontab命令。

/etc/cron.allow

该文件中所列用户允许使用crontab命令,优先于/etc/cron.deny

/var/spool/cron

所有用户crontab配置文件默认都存放在此目录,文件名以用户名命名。

指令选项说明表

参数

含义

指定示例

-l(字母)

查看crontab文件内容

crontab -l

-e

编辑crontab文件内容

crontab -e

-i

删除crontab文件内容,删除前会提示确认

crontab -ri

-r

删除crontab文件内容

crontab -r

-u user

指定使用的用户执行任务

crontab -u lee -l

提示:crontab{-l |-e}实际上就是在操作/var/spool/cron/当前用户这样的文件。

 

指令的使用格式

默认情况下,当用户建立定时任务规则后,该规则记录对应的配置文件会存在于/var/spool/cron中,其crontab配置文件对应的文件名与登录的用户名一致。
如:root用户的定时任务配置文件为/var/spool/cron/root。 crontab用户的定时任务一般分为6段(空格分隔,系统的定时任务则/etc/crontab分为7段),其中前五段位时间设定段,第六段为所要执行的命令或脚本任务段。crontab基本格式 * * * * * cmd提示: ① cmd为要执行的命令或脚本,例如/bin/sh /server/scripts/lee.sh. ② 每个段之间必须要有空格。

crontab语法格式中时间段的含义表

含义

取值范围

第一段

代表分钟

00-59

第二段

代表小时

00-23

第三段

代表日期

01-31

第四段

代表月份

01-12

第五段

代表星期

0-7(0和7都代表星期日)

crontab语法格式中特殊符号的含义表

特殊符号

含义

       *

号表示任意时间都,就是"每"的意思,举例:如00 01 * * * cmd表示每月每周每日的凌晨1点执行cmd任务。

   —

表示分隔符,表示一个时间范围段,如17-19点,每小时的00分执行任务。00 17-19 * * * cmd。就是17,18,19点整点分别执行的意思。

逗号,表示分隔时间段的意思。30 17,18,19 * * * cmd 表示每天17,18,19点的半点执行cmd。也可以和"-"结合使用,如: 30 3-5,17-19 * * * cmd。

/n

n代表数字,即"每隔n单位时间",例如:每10分钟执行一次任务可以写 */10 * * * * cmd,其中 */10,*的范围是0-59,也可以写成0-59/10。

书写crond定时任务要领

1 为定时任务规则加必要的注释
加了注释,就知道定时任务运行的是什么作业,以防以后作业混乱。[root@wen data]# crontab -e
##first crontab
*/1 * * * * /bin/date >> /data/date.log2 定时任务命令或程序最好写到脚本里执行
[root@angelT ~]# crontab -l
#backup www to /backup
00 00 * * * /bin/sh /server/scripts/www_bak.sh >/dev/null 2>&13 定时任务执行的脚本要规范路径,如:/server/scripts[root@angelT ~]# crontab -l
#backup www to /backup
00 00 * * * /bin/sh /server/scripts/www_bak.sh >/dev/null 2>&14 执行shell脚本任务时前加/bin/sh执行定时任务时,如果是执行脚本,尽量在脚本前面带上/bin/sh命名,否则有可能因为忘了为脚本设定执行权限,从而无法完成任务。[root@angelT ~]# crontab -l
#backup www to /backup
00 00 * * * /bin/sh /server/scripts/www_bak.sh >/dev/null 2>&15 定时任务结尾加 >/dev/null 2>&1[root@angelT ~]# crontab -l
#backup www to /backup
00 00 * * * /bin/sh /server/scripts/www_bak.sh >/dev/null 2>&1

5.1 有关/dev/null的说明
/dev/null为特殊的字符设备文件,表示黑洞设备或空设备。[root@angelT ~]# ll /dev/null
crw-rw-rw- 1 root root 1, 3 3月 26 01:10 /dev/nul5.2 有关重定向的说明>或1> 输出重定向:把前面输出的东西输入到后边的文件中,会删除文件原有内容。
>>或1>>追加重定向:把前面输出的东西追加到后边的文件中,不会删除文件原有内容。<或<0 输入重定向:输入重定向用于改变命令的输入,指定输入内容,后跟文件名。
<<或<<0输入重定向:后跟字符串,用来表示"输入结束",也可用ctrl+d来结束输入。2> 错误重定向:把错误信息输入到后边的文件中,会删除文件原有内容。
2>> 错误追加重定向:把错误信息追加到后边的文件中,不会删除文件原有内容。标准输入(stdin):代码为0,使用<或<<。
标准输出(stdout):代码为1,使用>或>>。正常的输出。
标准错误输出(sederr):代码为2,使用2>或2>>。特殊:
2>&1就是把标准错误重定向到标准输出(>&)。
>/dev/null 2>&1 等价于 1>/dev/null 2>/dev/null 5.3 >/dev/null 2>&1的作用如果定时任务规范结尾不加 >/dev/null 2>&1,很容易导致硬盘inode空间被占满,从而系统服务不正常(var/spool/clientmqueue邮件临时队列目录,垃圾文件存放于此,如果是centos 6.4以上系统,默认不装sendmail服务,所以不会有这个目录)。 6 在指定用户下执行相关定时任务这里要特别注意不同用户的环境变量问题,如果是调用了系统环境变量/etc/profile,最好在程序脚本中将用到的环境变量重新export下。7生产任务程序不要随意打印输出信息在调试好脚本程序后,应尽量把DEBUG及命令输出的内容信息屏蔽掉,如果确实需要输出日志,可定向到日志文件里,避免产生系统垃圾。

 

配置定时任务规范操作过程

①首先要在命令行操作成功,然后复制成功的命令到脚本里,在各个细小环境减少出错的机会。
②然后测试小本,测试成功后,复制脚本的规范路径到定时任务配置里,不要手敲。
③先在测试环境下测试,然后正式环境规范部署。 4.生产场景如何调试crond定时任务规范的公司开发和运维人员操作流程:个人的开发配置环境-->办公室的测试环境-->idc机房的测试环境-->idc机房的正式环境。4.1增加执行频率调试任务在调试时,把任务执行频率调快一点,看能不能正常执行,如果正常,那就没问题了,再改成需要的任务的执行时间。
注意:有些任务时不允许频繁执行的,例如:定时往数据库里插入数据,这样的任务要在测试机上测试好,然后正式线上出问题的机会就少了。4.2调整系统时间调试任务用正确的执行任务的时间,设置完成后,可以修改下系统当前时间,改成任务执行时间的前几分钟来测试(或者重启定时任务服务)4.3通过日志输出调试定时任务在脚本中加入日志输出,然后把输出打到指定的日志中,然后观察日志内容的结果,看是否正确执行。4.4注意一些任务命令带来的问题注意: * * * * * echo "==">>/tmp/lee.log >/dev/null 2>&1 这里隐藏的无法正确执行的任务配置,原因是前面多了>>,或者去掉结尾的 >/dev/null 2>&14.5 注意环境变量导致的定时任务故障例如:在调试java程序任务的时候,注意环境变量,把环境变量的定义加到脚本里。4.6通过定时任务日志调试定时任务
[root@angelT ~]# tail -f /var/log/cron
Mar 26 15:55:01 angelT CROND[3415]: (ida) CMD (/usr/sbin/ntpdate time.windows.com >/dev/null 2>&1)
Mar 26 15:55:01 angelT CROND[3416]: (root) CMD (/usr/sbin/ntpdate time.windows.com >/dev/null 2>&1)
Mar 26 16:00:01 angelT CROND[3422]: (root) CMD (/usr/sbin/ntpdate time.windows.com >/dev/null 2>&1)
Mar 26 16:00:01 angelT CROND[3423]: (root) CMD (/usr/lib64/sa/sa1 1 1) 编辑定时文件
[root@wen data]# crontab -e
##first crontab
*/1 * * * * /bin/date >> /data/date.log
no crontab for root - using an empty one
crontab: installing new crontab查看定时文件
[root@wen data]# crontab -l
##first crontab
*/1 * * * * /bin/date >> /data/date.log 配置文件所在地,对应文件名与登录的用户名一致
[root@wen cron]# ll /var/spool/cron
total 4
-rw------- 1 root root 57 Oct 19 15:32 root查看文件
[root@wen data]# tail -f date.log
Thu Oct 19 15:07:34 CST 2017
Thu Oct 19 15:09:01 CST 2017
Thu Oct 19 15:10:01 CST 2017
Thu Oct 19 15:11:01 CST 2017
Thu Oct 19 15:12:01 CST 2017删除定时任务
[root@wen data]# crontab -r
[root@wen data]# crontab -l
no crontab for root 

   

    参考内容http://oldboy.blog.51cto.com/2561410/1410555

转载于:https://www.cnblogs.com/wenyule/articles/7694177.html

相关文章:

用C#去除代码的SourceSafe管理

经常看一些的程序&#xff0c;有些一个解决方案带有多个项目&#xff0c;由于代码比较多&#xff0c;多人开发&#xff0c;所以好多vs.net下的工程是用source safe进行版本控制的。而用source safe进行版本控制需要局域网路径共享&#xff0c;因此好多项目换一台机器打开会出现…

用jarsigner对android apk进行签名

以前对apk重新打包签名都是用的apktool里面的Auto-sign 工具&#xff0c;后来发现有时候利用该工具对一些apk签名会失败&#xff0c;所以后来就使用 jarsigner这个工具&#xff0c;现记录一下这个工具的使用方法1 首先要生成一个自己的keyD:\>keytool -genkey -alias myKey…

利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换

作者&#xff1a;54dabang 在spring的学习过程之中&#xff0c;我们能够看出通过配置文件来动态管理bean对象的优点&#xff08;松耦合 能够让零散部分组成一个总体&#xff0c;而这些总体并不在意之间彼此的细节&#xff0c;从而达到了真正的物理上的疏散耦合&#xff0c;而非…

C#操作消息队列

public class QueueManage { /// /// 发送对象到队列中 /// /// 队列名称&#xff0c;因为队列名称在一个应用中应该不改变的&#xff0c;所以大家最好写在配置文件中 /// 要发出去的对象 public static void SendQueue(string QueuePath,MyBase.SmsQueue sq) { Syste…

2021《程序员》数字科技企业研发实力榜TOP50

互联网的盛行带来了众多数字科技企业的崛起&#xff0c;但如何客观地衡量每家企业的技术实力&#xff1f;研发投入、研发人才的数量和人才密度是关键指标。2021年5月,《程序员》根据相关企业披露的财报数据及市场调研数据&#xff0c;整理发布“2021数字科技企业研发实力榜TOP5…

eclipse中java项目转换为web项目

2019独角兽企业重金招聘Python工程师标准>>> 经常在eclipse中导入web项目时&#xff0c;出现转不了项目类型的问题&#xff0c;导入后就是一个java项目&#xff0c;有过很多次经历&#xff0c;今天也有同事遇到类似问题&#xff0c;就把这个解决方法记下来吧&#x…

MySQL · 引擎介绍 · Sphinx源码剖析(三)

在本节中我会介绍Sphinx在构建索引之前做的一些事情&#xff0c;主要是从mysql拉取数据保存&#xff0c;然后分词排序保存到内存等等一系列的操作。下面是几个相关指令 sql_query \SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, \title, content \FROM doc…

C#给图片添加版权信息

现在越来越多的网站都喜欢将用户上传的图片加上网站的版权信息&#xff0c;不要以为那是用photoshop之类的图片处理软件加上去的&#xff0c;其实我们只要写一小段代码&#xff0c;就可以实现这个功能。 添加版权信息的原理其实挺简单&#xff1a;通过图片获取Graphics类的对象…

Python + 爬虫:可视化大屏帮你选粽子

来源 | 数据分析与统计学之美头图 | 下载于ICphoto端午节快要到了&#xff0c;旅游&#xff1f;回家&#xff1f;拜访亲友&#xff1f;少不了要带上粽子。那么&#xff0c;选择什么牌子的粽子呢&#xff1f;选择什么口味的粽子呢&#xff1f;选择什么价格区间呢&#xff1f;今年…

adviser vs mentor

研究生或博士生提到自己导师的时候是说adviser呢&#xff1f;还是mentor呢&#xff1f; 至少我认识一个Berkeley的博士是说adviser的。 另外&#xff0c;我的导师也是说adviser。 那还是说adviser吧……

T extends Serializable这是什么意思呢?看明白这个,你的问题就自然而然的明白了!...

1.转自&#xff1a;https://blog.csdn.net/liwenqiang758/article/details/8131185 自己动手丰衣足食!!! 泛型是Java SE 1.5的新特性&#xff0c;泛型的本质是参数化类型&#xff0c;也就是说所操作的数据类型被指定为一个参数。 这种参数类型可以用在类、接口和方法的创建中&a…

C#中switch语句注意

大家肯定对switch语句并不陌生&#xff0c;它能够让程序根据控制表达式的值&#xff0c;从多个动作中作出选择(从逻辑过程看&#xff0c;和多分支语句if&#xff0d;else有些相似)。在C和java中也有这一语句&#xff0c;不过在C#中&#xff0c;这一语句则有了些变化。先看下边一…

对Cost (%CPU) 粗略的理解

今天研究执行计划&#xff0c;看到执行计划里面有Cost (%CPU)&#xff0c;我这边研究了一把&#xff0c;不知道对与否&#xff0c;拿出来晒晒在Oracle 10g中&#xff0c;Oracle 把CPU的cost也统计在执行计划中去了&#xff0c; 这和以前的8i,9i(9i其实已经开始了)有很大的不同。…

后疫情时代,RTC期待新的场景大爆发

整理 | 寇雪芹头图 | 下载于ICphoto出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09; 过去的一年中&#xff0c;新冠疫情悄然改变了社会发展和人们的生活&#xff0c;也助推了实时音视频&#xff08;Real-Time Communication&#xff09;技术的落地应用&#xff0c;数…

JS-DOM-元素节点

查看元素节点: 1、getElementById():通过 id 取到唯一节点;如果 id 重名,只能取到第一个 getElementByName(): 通过name属性 getElementByTagName(): 通过标签名 getElementByClassName(): 通过class名 获取元素节点时,一定要注意:获取节点的语句,必须在 DOM 渲染完成之后执行。…

现代软件工程 第十章 【典型用户和场景】 练习与讨论

1. 讨论&#xff1a;下面的老板犯了什么错误? 只看用户的表面语言或行动还是不够的。我们还要找到用户语言行动背后的动机! (图像来源: http://www.weibo.com/funnyshoelace) 2. 是否要文档 有人说&#xff0c;我们敏捷的团队&#xff0c;就喜欢直接的面对面的交流&#xff0…

赠书 | 读懂生成对抗神经网络 GAN,看这文就够了

生成对抗神经网络&#xff08;Generative Adversarial Nets&#xff0c;GAN&#xff09;是一种深度学习的框架&#xff0c;它是通过一个相互对抗的过程来完成模型训练的。典型的GAN包含两个部分&#xff0c;一个是生成模型&#xff08;Generative Model&#xff0c;简称G&#…

把Doc文档转换成rtf格式

先在项目引用里添加上对Microsoft Word 9.0 object library的引用。 using System; namespace DocConvert { class DoctoRtf { static void Main() { //创建一个word的实例 Word.Application newApp new Word.Application(); // 指定源文件和目标文件 object Source&quo…

中国书法的造型元素与原理 刘彦湖

为什么80%的码农都做不了架构师&#xff1f;>>> --------------------------------------------------------------------------------中国书法的造型元素与原理 刘彦湖 中国书法是用最基本的元素遵从中国人特有的形式原则建构起来的大厦。 对于元素及其品质的认…

融云任杰:强互动,RTC 下一个“爆点”场景 | 拟合

从无序中寻找踪迹&#xff0c;从眼前事探索未来。2021 年正值黄金十年新开端&#xff0c;CSDN 以中立技术社区专业、客观的角度&#xff0c;深度探讨中国前沿 IT 技术演进&#xff0c;推出年度重磅企划栏目——「拟合」&#xff0c;通过对话企业技术高管大咖&#xff0c;跟踪报…

推荐一个个人感觉比较有吸引力的网站

2019独角兽企业重金招聘Python工程师标准>>> 廖雪峰的官方网站 转载于:https://my.oschina.net/AaronCN/blog/294293

C# 2进制、8进制、10进制、16进制...各种进制间的轻松转换

在.NET Framework中&#xff0c;System.Convert类中提供了较为全面的各种类型、数值之间的转换功能。其中的两个方法可以轻松的实现各种进制的数值间的转换&#xff1a; Convert.ToInt32(string value, int fromBase)&#xff1a; 可以把不同进制数值的字符串转换为数字&#x…

solrj操作单机solr

2019独角兽企业重金招聘Python工程师标准>>> 在目前的生产过程中全文检索技术应用越来越广&#xff0c;其中涌现了一批非常好得开源搜索引擎框架&#xff0c;如solr,elasticsearch等等。其中我工作使用最多的是solr&#xff0c;并在此对之前工作做一个总结。 solr的…

基于微软开源深度学习算法,用 Python 实现图像和视频修复

‍‍作者 | 李秋键编辑 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;图像修复是计算机视觉领域的一个重要任务&#xff0c;在数字艺术品修复、公安刑侦面部修复等种种实际场景中被广泛应用。图像修复的核心挑战在于为缺失区域合成视觉逼真和语义合理的像素&…

C#实现光盘做启动盘

一 &#xff1a;编程思想 1、创建启动盘 插入要创建的启动盘&#xff0c;程序自动检测光驱中光盘&#xff0c;利用WMI&#xff08;Windows管理架构&#xff1a;Windows Management Instrumentation&#xff09;读取该光盘的序列号&#xff08;具有唯一性&#xff09;&#xf…

为云服务立规矩——首批可信云服务认证名单公布

俗话说&#xff0c;没有规矩不成方圆。在云服务蓬勃发展的今天&#xff0c;无论从规范行业发展&#xff0c;还是为用户提供保障&#xff0c;推动政府云服务采购的角度来说&#xff0c;云服务市场都需要立规矩。7月15日至16日&#xff0c;以“可信中国云&#xff0c;未来新生态”…

Java:多个文档合并输出到一个文档

多个文档合并输出到一个文档 方法&#xff1a;Java NIO package First;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.channels.FileChannel; import java.nio.channels.WritableByteChannel;public class Test {pu…

线性表之顺序表(C语言实现)

线性表是从数据元素的逻辑结构上定义的. 这种数据元素的逻辑结构的特征如下: 1.除开第一个和最后一个元素之外.所有元素都有一个前驱元素和后继元素. 2.第一个元素无前驱元素,但有后继元素. 3.最后一个元素有前驱元素,单无后继元素. 可以抽象为如下表述: 元素1元素2元素3元素4元…

C# POP3编程

POP3的使用很简单,所以.net没有向SMTP那样给出相应的类来控制. 废话少说,程序员最需要的使代码,:)! 1.打开VS.NET 2003. 2.新建一个WinForm Application. 3.添加命名空间 using System; using System.Drawing; using System.Collections; using System.ComponentModel; usi…