Linux系统定时任务Crond

Crond是什么

Crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件。

特殊需求:(秒级别)crond服务就无法搞定,一般工作中邪脚本守护进程执行(一般用不上)

为什么要使用crond定时任务

Linux系统的定时任务crond,相当于我们平时生活中得闹钟功能。可以满足周期性执行任务的需求。

Linux系统的定时任务

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

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

2.用户执行的任务工作:例如每隔5分钟和互联网上时间服务器进行时间同步。一般这些工作需要用户自行设置。

[[email protected] ~]# crontab -l
####time sync by xuliangwei 2015-07-30
*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1

定时任务crond使用说明

[[email protected] ~]# crontab --help
crontab: invalid option -- ‘-‘
crontab: usage error: unrecognized option
usage:  crontab [-u user] file
        crontab [-u user] [ -e | -l | -r ]
                (default operation is replace, per 1003.2)
        -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)

指令选项说明表

参数含义指定示例

-e编辑crontab文件内容crontab -e
-l查看crontab文件内容crontab -l
-i删除crontab文件内容,删除前会提示确认Crontab -ri
-r删除crontab文件内容crontab -r
-u指定使用的用户执行任务crontab -u xuliangwei -l

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

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 20,21,22 * * * cmd 表示每天20,21,22点得半点执行cmd。

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

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

文件说明

/etc/crontabCrontab配置文件

/etc/cron.deny该文件中所列用户不允许使用crontab命令。

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

生产中书写定时任务的要领

为定时任务规则加必要的注释

[[email protected] ~]# crontab -l
####time sync by xuliangwei 2015-07-30
*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1

定时任务命令或程序最好写到脚本里执行

[[email protected] ~]# crontab -l
####backup www to /backup xuliangwei 2015-07-30
00 01 * * * /bin/sh /server/scripts/www_backup.sh >/dev/null 2>&1

定时任务执行的脚本要规范路径(/server/scripts)

[[email protected] ~]# crontab -l
####backup www to /backup xuliangwei 2015-07-30
00 01 * * * /bin/sh /server/scripts/www_backup.sh >/dev/null 2>&1

执行shell脚本任务前加/bin/sh

[[email protected] ~]# crontab -l
####backup www to /backup xuliangwei 2015-07-30
00 01 * * * /bin/sh /server/scripts/www_backup.sh >/dev/null 2>&1

定时任务命令或脚本结尾加>/dev/null 2>&1

[[email protected] ~]# crontab -l
####backup www to /backup xuliangwei 2015-07-30
00 01 * * * /bin/sh /server/scripts/www_backup.sh >/dev/null 2>&1

在指定用户下执行相关的定时任务

这里要特别注意不同用户的环境变量问题,如果是调用了系统环境变量/etc/profile,最好在程序脚本中将用到得环境变量重新export下。

生产任务程序不要随意打印输出信息

在调试好脚本程序后,应尽量把DEBUG及命令的输出信息屏蔽掉,如果确实需要输出日志,可定向到日志文件里,避免产生系统垃圾。

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

1)配置定时任务规范操作过程,防止出错。

2)首先要在命令操作成功,然后复制成功的命令到脚本里,在各个细小环节减少出错的机会

3)然后测试脚本,测试成功后,复制脚本的规范路径到定时任务配置里,不要手敲。

生产中如何调试定时任务

规范的公司开发和运维人员操作流程:

个人的开发配置环境→办公室测试环境→idc机房测试环境→idc机房正式环境。

增加执行任务频率调试任务

在调试时,把任务执行频率调快一点,看能不能正常执行,如果正常,那就没问题,再改成需要的任务的执行时间。

注意:有些任务时,不允许频繁执行,例如:定时往数据库里插入数据,这样的任务要在测试机上测试好,然后正式线上出问题的机会就少了。

调整系统时间调试任务

用正确的执行任务的时间,设置完成后,可以修改下系统当前时间,改成任务执行时间的前几分钟来测试(或者重启定时任务服务)

注意:(不能直接用于生产环境),保证5分钟

通过脚本日志输出调试定时任务

在脚本中加入日志输出,然后把输出打到指定的日志中,然后观察日志内容的结果,看是否正确执行。

注意一些任务命令带来的问题

* * * * * echo “xuliangwei” >>/tmp/xlw.log >/dev/null 2>&1 这里隐藏的无法正确执行的任务配置,原因是前面多了>>,或者去掉后面的 >/dev/null 2>&1

注意环境变量导致的定时任务故障

例如:在调试java程序任务的时候,注意环境变量,把环境变量的定义加到脚本里。

通过crond定时任务服务日志调试定时任务

[[email protected] ~]# tail -f /var/log/cron
Jul 31 12:15:01 student CROND[7530]: (root) CMD (/usr/sbin/ntpdate time.windows.com >/dev/null 2>&1)
Jul 31 12:15:29 student crontab[7527]: (root) REPLACE (root)

生产中定时任务10简言

系统环境变量问题

脚本权限问题加 /bin/sh

实践变量问题用反斜线\%转义,最好使用脚本。

>/dev/null 2>&1问题

定时任务规则之前加注释

使用脚本程序替代命令行定时任务

避免不必要的程序及命令输出

1)切到目标目录的上一级打包目标

2)定时任务脚本中的程序命令尽量用全路径(和环境变量的识别有关)

时间: 2024-10-03 15:21:32

Linux系统定时任务Crond的相关文章

Linux系统定时任务crond那些事

1 Linux系统定时任务 1.1 定时任务介绍 1.1.1 Crond是什么? Crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.Centos5/6 linux系统安装完操作系统默认会启动crond任务调度服务,系统开机启动优化保留crond服务开机自启动.Crond服务定期(默认是每分钟检查一次)检查系统中是否有要执行的任务工作.这个crond定时任务服务就相当于我们平时使用的闹钟一样.特殊需求:(秒级别)crond服务搞不定了,工作中一般写脚本守护程序执行. 1.

第十八天-linux系统定时任务crond深入实战

简答:1.每隔1分钟,打印一个+号到oldboy.log,请给出crontab完整命令.    解答:     #printf + every minute    *  *  *  *  * echo '+'>> /oldboy.log 2.每隔2个小时将/etc/services文件打包备份到/tmp下(最好每次备份成不同的备份包).    解答:    (1)在命令行测试    [email protected]:~# ll /etc/services     -rw-r--r-- 1 r

Linux学习之九-Linux系统定时任务

Linux系统定时任务 在一些实际工作中需要机器在某个时间自动执行某个任务,不需要人为在此时刻参与,可以建立一个定时任务. crond 服务是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务. 使用命令/etc/init.d/crond status检查服务是否处于运行状态, 使用

Linux 系统定时任务:crontab,anacron

Linux 系统定时任务:crontab,anacron 一.Cron 服务 1. 启动服务 service cron start 2. 关闭服务 service cron stop 3. 重启服务 service cron restart 4. 重新载入配置 service cron reload 5. 查看服务状态 service cron status 二.用户定时任务 1. 选项 -e:执行文字编辑器来设定定时任务-l:列出目前所有定时任务-r:删除目前所有定时任务(慎用) 要经常备份定

第十七天-linux系统定时任务crontab入门讲解

首先先了解下程序和进程的区别: 程序概念: 程序是为了解决一个信息处理任务而预先编制的工作执行方案,是由一串cpu能够执行的基本指令组成的序列,每一条指令规定了计算机进行什么操作(比如加.减.乘.除.判断等)及操作需要的有关数据.例如,从存储器读入一个数送到运算器就是一条指令,从存储器读出一个数并和运算器中原有的数相加也是一条指令.简单的说:我们使用的命令就是程序,QQ程序,听歌的MP3软件,linux系统也是程序. 基本特征:一堆代码,一个文件,一个命令,程序是静态的,放在电脑里还没有被运行.

linux系统的crond服务

linux系统中有一个服务,用来做周期性运行的例行任务,这个服务就是crond服务.执行这项服务的命令 就是crontab命令了.而linux下的任务调度又分为系统任务调度和用户任务调度两个大类. 系统任务调度 系统周期性所要执行的工作,比如写缓存数据到硬盘,日志的定期清理一类的,在/etc目录下有一个 crontab的文件,这个就是系统任务调度的配置文件了.来看一下这个配置文件的说明 [[email protected] Desktop]# cat /etc/crontab SHELL=/bi

20160929老男孩运维视频L4-01系统定时任务crond理论详解

Linux日志默认存放位置 /var/log/ 轮询任务和用户任务 crond 命令 默认的设置crond用户的文件 /etc/crond.deny  #这是不准使用crond的用户就写时这个文件内 /etc/crond.allow #能使用crond的用户写入这里 /var/spool/cron/ #这是放crond命令文件的地方 crontab 命令格式 crontab [-u 用户名] [文件路径] crond的文件写入格式 ***** /文件与命令 解释 分 时 天 月 周 /文件与命令

linux系统定时任务设置

.使用at命令设置一次性定时任务 2.使用crontab设置周期性定时任务 1)cd /home 目录下,使用vi test.py创建文件,内容如下: #!/usr/bin/python#coding=utf-8 import timef=open('f.txt','w')now = time.strftime('%Y-%m-%d-%H_%M_%S',time.localtime(time.time()))f.write('file run time:'+now+'\n') f.close()

linux系统定时任务

crontab常用的几个命令如下 sudo crontab -l #显示所有的定时任务 sudo crontab -e #编辑任务 sudo crontab -r #删除所有的任务 编辑任务时的书写方式如下: * * * * * echo "hello world" >> /tmp/hello.txt #每分钟向/tmp/hello.txt文件中追加一行 "hello world" 五个*依次表示 minute — 分钟,从 0 到 59 之间的任何整数