linux crond 定时,linux下添加crond定时任务

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

一.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/

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231087.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 企业级发卡网源码下载带代理系统授权搭建教程

    企业级发卡网源码下载带代理系统授权搭建教程  发卡网源码,英文名:Automaticshippingsourcecode,适用于构建在互联网上用于虚拟商品自动发货和交易的网购平台。往往根据用途和规模不同,分为:企业发卡网源码和个人发卡网源码,其核心功能为自动发货和自动收付款,类似于线下的无人售货机。  发卡网只适用于虚拟物品的交易,无法完成实物的交易,由于实物涉及快递时长,不符合发卡网方便快捷的特点。要想搭建一个运转良好的发卡网是需要做大量工作的,但最重要最基础的是搭建的发卡网源码稳定且bug少,不然很难提供频繁的发卡交易服务。 

    2022年7月14日
    38
  • Springboot整合JdbcTemplate实现分页查询「建议收藏」

    Springboot整合JdbcTemplate实现分页查询「建议收藏」在做SpringBoot后端项目时,我想采用后端分页的模式,后端分页是在后端先把数据处理好,再发给前端,前端只需要访问对应的页面拿相应页的数据即可。后端分页的写法中MyBatis和JPA都有现成的后端分页组件,而JdbcTemplate却没有。因此这里以实体类User为例把自己的学习过程记录下来。…

    2022年10月9日
    3
  • 求逆矩阵公式推导_逆矩阵公式运算公式

    求逆矩阵公式推导_逆矩阵公式运算公式求逆矩阵公式推导

    2022年8月21日
    12
  • mysql乐观锁的实现_如何实现乐观锁

    mysql乐观锁的实现_如何实现乐观锁使用Mysql实现分布式锁

    2022年10月21日
    4
  • 矩阵外积与内积

    矩阵外积与内积一个行向量乘以一个列向量称作向量的内积,又叫作点积,结果是一个数;一个列向量乘以一个行向量称作向量的外积,外积是一种特殊的克罗内克积,结果是一个矩阵,假设和b分别是一个行向量和一个列向量,那么内积、外积分别记作和,,为了讨论方便,假设每个向量的长度为2。注意:外积在不同的地方定义方式不太一样,这里不详细讨论定义了内积和外积以后,我们讨论矩阵的乘法。矩

    2025年8月7日
    3
  • mysql数据库面试题目及答案_数据库面试题2021

    mysql数据库面试题目及答案_数据库面试题2021MySQL数据库面试题(2022版)文章目录一、基础基本概念MySQL有哪些数据库类型?CHAR和VARCHAR区别?数据库设计什么是三大范式?什么是范式和反范式,以及各自优缺点?二、索引索引的几种类型或分类?索引的优缺点?索引设计原则?索引的数据结构?Hash和B+树索引的区别?为何使用B+树而非B树做索引?什么是最左匹配原则?什么是覆盖索引?什么是索引下推?三、存储存储引擎有哪些常见的存储引擎?MyISAM和InnoDB的区别?InnoDB的四大特性?InnoDB为.

    2022年10月8日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号