一.crond命令

crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

/sbin/service crond start    //启动服务

/sbin/service crond stop     //关闭服务

/sbin/service crond restart  //重启服务

/sbin/service crond reload   //重新载入配置

/sbin/service crond status   //查看服务状态

crond读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。

crond的配置文件称为“crontab”,是“cron table”的简写。

二.crond在3个地方查找配置文件

1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。

一般一个用户最多只有一个crontab文件。

2、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。

3、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

三.权限

crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在

用法如下:

1、如果两个文件都不存在,则只有root用户才能使用crontab命令。

2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。

3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。

4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,

以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。

四. crontab命令

crond服务提供crontab命令来设定crond服务的,以下是这个命令的一些参数与说明:

crontab -u //设定某个用户的crond服务,一般root用户在执行这个命令的时候需要此参数

crontab -l //列出某个用户crond服务的详细内容

crontab -r //删除某个用户的crond服务

crontab -e //编辑某个用户的crond服务

比如说root查看自己的crond设置:crontab -u root -l

再例如,root想删除fred的crond设置:crontab -u fred -r

五.配置crontab

可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件

具体格式如下:

Minute Hour Day Month Dayofweek   command

分钟     小时   天     月       天每星期       命令

每个字段代表的含义如下:

Minute             每个小时的第几分钟执行该任务,0-59

Hour                每天的第几个小时执行该任务,0-23

Day                  每月的第几天执行该任务,1-31

Month             每年的第几个月执行该任务,1-12

DayOfWeek     每周的第几天执行该任务,0-6,0表示星期日,也可以用英文来表示,sun表示星期天,mon表示星期一

Command       指定要执行的程序

记住几个特殊符号的含义:

“*”代表取值范围内的数字,

“/”代表”每”,

“-”代表从某个数字到某个数字,

“,”分开几个离散的数字

举例如下:

5       *       *           *     *     ls             指定每小时的第5分钟执行一次ls命令

30     5       *           *     *     ls             指定每天的 5:30 执行ls命令

30     7       8         *     *     ls              指定每月8号的7:30分执行ls命令

30     5       8         6     *     ls              指定每年的6月8日5:30执行ls命令

30     6       *           *     0     ls            指定每星期日的6:30执行ls命令

30     3     10,20     *     *     ls              每月10号及20号的3:30执行ls命令

25     8-11  *           *     *     ls            每天8-11点的第25分钟执行ls命令

*/15   *       *           *     *     ls            每15分钟执行一次ls命令

30      6     */10    *     *     ls               每个月中,每隔10天6:30执行一次ls命令

50      7       *      *     *     root     run-parts   /etc/cron.daily

每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件[ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]

六.crontab中的输出配置

以上的定时任务执行结果都被输出到对应用户的email中,crond支持将执行结果输出到指定文件中

crontab中经常配置运行脚本输出为:>/dev/null   2>&1,来避免crontab运行中有内容输出。

shell命令的结果可以通过‘> ’的形式来定义输出

/dev/null 代表空设备文件

> 代表重定向到哪里,例如:echo     "123"     > /home/123.txt

1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"

2 表示stderr标准错误

& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

那么重定向输出语句的含义:

1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。

2>&1 表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

例1:每天5:30执行ls命令,并把结果输出到/jp/test.log文件中

30     5     *     *     *     ls     >/jp/test.log     2>&1

七.crontab与环境变量

不要假定crond知道所需要的特殊环境,它其实并不知道。所以你要保证在要执行的shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:

1、脚本中涉及文件路径时写全局路径;

2、脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:

cat start_cbp.sh

#!/bin/sh

source /etc/profile

export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf

/usr/local/jboss-4.0.5/bin/run.sh -c mev &

3、当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:

0     *     *     *     *     . /etc/profile;/bin/sh     /var/www/java/audit_no_count/bin/restart_audit.sh

八.其他应该注意的问题1、新创建的crond job,不会马上执行,至少要过2分钟才执行。如果重启crond则马上执行。

2、 每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常的多,甚至会撑爆整个系统。所以每条 JOB 命令后面进行重定向处理是非常必要的: >/dev/null  2>&1 。前提是对 Job 中的命令需要正常输出已经作了一定的处理, 比如追加到某个特定日志文件。

3、当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行报错    tail -f /var/log/cron。

4、千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。

5、在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。

附录:

http://blog.csdn.net/hi_kevin/article/details/8983746

http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html

http://blog.csdn.net/dancen/article/details/24355287

linux crond 定时,linux下添加crond定时任务相关推荐

  1. Linux在fcitx框架下添加小鹤音形(挂载在中州韵输入法下)

    Linux在fcitx框架下添加小鹤音形(挂载在中州韵输入法下) 0.注意该方法会完全替换掉中洲韵中的其他输入法,如果还需要其他输入法,可以用sudo apt install fcitx-然后按下Ta ...

  2. win8手动添加linux启动项,Win8下添加开机启动项的简单办法

    Win8的用户越来越多,大家会发现任务管理器新添加了一个"启动"的功能,我们可以在其中随意删减开机启动项,以达到提高开机效率的目的.但是怎样才能添加我们平时经常用到的软件作为开机启 ...

  3. linux执行定时,linux定时执行 - 乄珍惜

    定时语法说明 crontab的基本格式: * * * * * command 星号分别为:分 时 日 月 周 特殊的符号就是* / - :代表所有的取值范围内的数字 / 代表每的意思 */5 表示每5 ...

  4. linux查看定时服务,linux 定时任务 crond 服务介绍

    linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...

  5. linux环境下添加定时任务,linux下添加定时任务。

    这周要做一个定时增量更新Elasticsearch索引的功能,以前没有做过定时更新,所以请教了下同事,使用crontab添加linux下的定时任务. 一.linux下定时执行任务的方法 在linux中 ...

  6. linux 如何定时任务添加,linux下添加定时任务。

    这周要做一个定时增量更新Elasticsearch索引的功能,以前没有做过定时更新,所以请教了下同事,使用crontab添加linux下的定时任务. 一.linux下定时执行任务的方法 在linux中 ...

  7. Linux中结束kettle挂起进程,linux停使用crond定时执行kettle的job

    当前位置:我的异常网» Linux/Unix » linux停使用crond定时执行kettle的job linux停使用crond定时执行kettle的job www.myexceptions.ne ...

  8. Linux服务项目实例,linux 定时任务 crond 服务应用指南(项目实例)

    linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级 ...

  9. linux设置定时备份任务,Linux下Oracle设置定时任务备份数据库的教程

    1.查看数据库的字符集 数据库的字符集必须和linux下设置的环境变量一致,不然会有乱码. 以下两个sql语句都可以查到: select * from nls_database_parameters ...

最新文章

  1. springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试
  2. Typora添加右键新建Markdown文件
  3. python右对齐函数_python右对齐的实例方法
  4. 【ASP.NET Web API教程】2.3.5 用Knockout.js创建动态UI
  5. Angular rxjs源代码分析:range(0, 10)的实现
  6. C/C++编程笔记:输入输出的优化,你还为思路正确却TLE而烦恼吗?
  7. 阿里健康上线新冠核酸检测服务:本周覆盖北京武汉等38城
  8. Vue项目在nginx下的部署实践(个人学习总结)
  9. xp 计算机桌面图标不见,萝卜XP系统桌面图标全部消失了如何解决
  10. 深度解码企业文化体系
  11. 华为手机助手 linux,HiSuite-华为手机助手上线!从此再也不担心手机数据导不进Mac电脑啦!...
  12. android原生 6108v9a,全国通用版华为EC6108V9A图文教程
  13. Mybatis面向接口编程
  14. IBM内存三技术:Chipkill、MPX、MM
  15. php菱形,PHP 打印菱形
  16. 计算机打开远程桌面服务,如何开启Windows远程桌面服务 | 远程操作自己的电脑...
  17. 标准C函数库头文件、POSIX标准库头文件和Windows API函数库头文件说明
  18. 『网络迷踪』ctfshow-网络迷踪(部分)
  19. PMP-9.项目经理的能力2
  20. linux卡利系统设置密码,Windows 10 Windows Linux子系统安装指南-官网

热门文章

  1. 优思学院 | 质量工程师的职责有哪些?
  2. 三体人有救了!深度学习解决三体难题
  3. 体验IntelliJ IDEA的远程开发(Remote Development)
  4. 对FPKM/RPKM以及TPM的理解
  5. JS实现数学排列组合公式
  6. 7-8 将x的平方赋值给y (5 分)
  7. python PSNR代码
  8. java查看端口号被占用_如何查看端口号是否被占用
  9. VR的内容荒漠,字节救不了
  10. 23/24哈工程计算机考研解读