linux应用之crontab定时任务的设置

Linux-cron cron是Linux系统中用于定时执行任务的守护进程,通过检查crontab文件来调度任务。它由cron守护进程、crontab文件和日志组成,广泛用于自动化系统维护和备份等任务。crontab文件格式包含五个时间字段和一个命令字段,支持特殊符号如*、,、-和/来定义时间。 阅读详情


实现Linux定时任务有:cron、anacron、at等,这里主要介绍cron服务。

名词解释:

   cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。

软件包安装:

要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作用如下:

vixie-cron软件包是cron的主程序。
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

查看是否安装了cron软件包: rpm -qa|grep vixie-cron

查看是否安装了crontabs软件包:rpm -qa|grep crontabs

如果没有安装,则执行如下命令安装软件包(软件包必须存在)
rpm -ivh vixie-cron-4.1-54.FC5*
rpm -ivh crontabs*

如果本地没有安装包,在能够连网的情况下可以在线安装

yum install vixie-cron
yum install crontabs

查看crond服务是否运行:

pgrep crond

或

/sbin/service crond status

或

ps -elf|grep crond|grep -v "grep"

 

crond服务操作命令:

/sbin/service crond start //启动服务  
/sbin/service crond stop //关闭服务  
/sbin/service crond restart //重启服务  
/sbin/service crond reload //重新载入配置

 

配置定时任务:

cron有两个配置文件,一个是一个全局配置文件(/etc/crontab),是针对系统任务的;一组是crontab命令生成的配置文件(/var/spool/cron下的文件),是针对某个用户的.定时任务配置到任意一个中都可以。

查看全局配置文件配置情况: cat /etc/crontab

---------------------------------------------
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
----------------------------------------------

查看用户下的定时任务:crontab -l或cat /var/spool/cron/用户名

crontab任务配置基本格式:
*   *  *  *  *  command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)  命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。
用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。
正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。
开头为井号(#)的行是注释,不会被处理。 

 

例子:

0 1 * * * /home/testuser/test.sh
每天晚上1点调用/home/testuser/test.sh

*/10 * * * * /home/testuser/test.sh
每10钟调用一次/home/testuser/test.sh

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
每半小时同步一下时间

配置用户定时任务的语法:

crontab [-u user]file

crontab [-u user] [-l| -r | -e][-i]

参数与说明:

crontab -u//设定某个用户的cron服务

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

crontab -r//删除没个用户的cron服务

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

 

例子:

假设当前用户是root,要建立root用户的定时任务

crontab -e

选择编辑器,编辑定时任务(这里假设是编辑器是vi)

按i进入编辑模式

0 1 * * * /root/test.sh

按esc退出编辑模式进入普通模式,输入:x或:wq保存退出

查看刚刚输入的定时任务

crontab -l 或 cat /var/spool/cron/root

根用户以外的用户可以使用 crontab 工具来配置 cron 任务。所有用户定义的 crontab 都被保存在 /var/spool/cron 目录中,并使用创建它们的用户身份来执行。要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令,使用由 VISUAL 或 EDITOR 环境变量指定的编辑器来编辑该用户的 crontab。该文件使用的格式和 /etc/crontab 相同。当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名被保存,并写入文件 /var/spool/cron/username 中。
      cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron 目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个 crontab 文件改变后就不必重新启动守护进程了。

重启crond:

/sbin/service crond restart

查看cron服务是否起作用:

如果我们要查看定时任务是否准时调用了可以/var/log/cron中的运行信息

cat /var/log/cron

或

grep .*\.sh /var/log/cron

搜索.sh类型文件信息
或

sed -n '/back.*\.sh/p' /var/log/cron
格式sed -n '/字符或正则表达式/p' 文件名

我们在日志中查看在约定的时间是否有相应的调用信息,调用信息类似:

Sep 19 1:00:01 localhost crond[25437]: (root) CMD (/root/test.sh)

查看shell脚本是否报错:

如果/var/log/cron中准时调用了shell脚本,而又没有达到预期结果,我们就要怀疑shell脚本是否出错

cat /var/spool/mail/用户名

例子:

cat /var/spool/mail/root

 

test.sh

-------------------------

#!/bin/sh

echo "$(date '+%Y-%m-%d %H:%M:%S') hello world!" >> /root/test.log

-------------------------

要追踪shell调用的全过程:

bash -xv test.sh 2>test.log

test.sh的调用过程都会写到test.log中

或

改写test.sh

 

-------------------------

#!/bin/sh

set -xv

echo "$(date '+%Y-%m-%d %H:%M:%S') hello world!" >> /root/test.log

-------------------------

sh ./test.sh 2>tt.log

 

网上查询到的资料crontab不执行的问题:

第一,脚本的原因:大多数情况下,我们要相信科学,相信计算机,不是有鬼,就是我们的脚本的问题,这种问题导致crontab不能执行的概率占到 70%以上。因为程序执行到某一步导致crontab终止执行,我就碰到一次在迁移代码的时候将数据库连错了。导致无法访问而死在那里了。

第二,执行环境问题,当我们碰到第一情况下,一般都可以通过手动执行程序将问题扼杀在摇篮里,一般情况下高手是不应该犯第一种错误的。问题是当我们 手动执行成功而crontab不能执行的时候,笔者碰到一次就是执行环境的问题,例如相关路径的设置问题。解决方案:在代码最前面执行 source /home/user/.bash_profile

第三,系统时间不正确。这种问题最好理解,也是比较常见和隐蔽的问题,解决方案:date -s ********

第四,就是我们的脚本是否有可执行权限。必须保证执行脚本的用户有执行改文件的权限。

第五,crontab 守护进程死掉了。这种情况是极少发生的,但也不排除,当我们实在是找不到其他原因的时候可以用。解决方案:重启该进程。

第六,crontab不执行的问题困扰了好长时间,脚本写的都正确,但是就是不执行,最终解决方法如下:
        crontab -u root /var/spool/cron/root
        这样root用户的crontab就生效了
        service crond restart
        重启下服务就好了

第七,crond没有启动

第八,脚本编码问题,脚本在window下编写,传到linux下后报“锘?!/bin/bash”,用vi编辑器新建新shell脚本,输入内容后保存。

 

参考资料:http://blog.csdn.NET/zhangskd/article/details/6854589

                       http://my.oschina.Net/u/576757/blog/71084

                       http://linux.vbird.org/linux_basic/0430cron.PHP 关于anacron鸟哥的文章中有说明

                       http://study.chyangwa.com/IT/AIX/aixcmds1/crontab.htm

Linux常用功能之cron详解 cron 是 Unix 和 Linux 系统中用于调度定期执行任务的守护进程,它允许用户设定命令或脚本在特定的时间间隔自动运行。cron 通过读取用户的 crontab 文件来确定要执行的任务及其时间表,每个用户都有自己的 crontab 文件,超级用户(root)可以为所有用户管理这些文件。 阅读详情

相关推荐

Linux的定时任务详解

Linux的定时任务详解 文章目录一 什么是定时任务?二 控制定时任务三 crontab命令四 实际运用定时任务五 会遇到的问题及解决方法5.1 权限问题5.2 脚本注意问题 一 什么是定时任务? 任务调度的crond常驻命令 crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类: 1、系统执行的工作:系统周期性所要执行的工作,如备

yang_z_1的博客 6122

Linux计划任务(Cron):小白完全指南

在Linux系统中,计划任务(Cron)是一种强大的工具,可以自动执行预定的任务。它非常适合定期运行脚本、备份数据、清理临时文件等一系列重复性任务。本文将向您介绍如何使用Cron来安排和管理计划任务,以帮助小白用户轻松上手。二、查看和编辑任务列表。四、Cron表达式示例。

pengpeng0121的博客 107万+

Linux 中的 cron 命令及示例

它使用户能够不显眼地定期执行计划任务,例如每天午夜进行备份、每周安排更新、定期同步文件。Cron 会定期检查计划作业,当计划时间字段与当前时间字段匹配时,就会执行计划命令。执行计划任务的命令列表。crontab 命令语法有六个由空格分隔的字段,其中前五个表示运行任务的时间,最后一个用于命令。cron是一个软件实用程序,由类似 Linux 的操作系统提供,可以在预定时间自动执行计划任务。,作为后台进程运行,并在触发某个事件或条件时在预定义的时间执行指定的操作,而无需用户干预。

wly476923083的博客 1516

Linux 下使用 cron 定时任务

Linux 定时任务详解!!!

GG Bond 的博客 1万+

企业微信-审批控件中的外部选项的应用全流程完美解决方案

完美解决企业微信所有JS-SDK调用问题 完美解决苹果和PC端不适配的问题

qq_45195039的博客 5868

计算机视觉:暗通道去雾算法的原理及python实现

在绝大多数非天空的局部区域中,某些像素总会至少有一个颜色通道的值很低。对于一幅图像J(x),其暗通道的数学定义表示如下:其中,Ω(x)表示以x为中心的局部区域,上标c表示RGB三个通道。该公式的意义用代码表达也很简单,首先求出每个像素RGB分量中的最小值,存入一副和原始图像大小相同的灰度图中,然后再对这幅灰度图进行最小值滤波,滤波的半径由窗口大小决定。

weixin_51998427的博客 1万+

linux crontab -e 时间设置,linux应用之crontab定时任务的设置

件包安装:要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作用如下:vixie-cron软件包是cron的主程序。crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。查看是否安装了cron软件包:rpm -qa|grep vixie-cron查看是否安装了crontabs软件包:rpm -qa|grep crontab...

weixin_36261487的博客 910

DOA估计算法从原理到仿真——CBF、Capon、MUSIC算法

从原理出发理解并实现经典的DOA估计算法

m0_55845774的博客 1万+

linux应用之crontab定时任务的设置 (简单操作)

前述:linux应用之crontab定时任务的设置实现Linux定时任务有:cron、anacron、at等,这里主要介绍cron服务。名词解释:   cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。1、  crontab命令概念 crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 ...

huangyinzhao的博客 3758

发那科机器人弧焊指令实战:从Search指令到组掩码设置的完整避坑指南

本文详细解析了发那科机器人弧焊指令系统的实战应用,从Search指令的正确使用到组掩码设置的避坑技巧。通过实际案例和参数优化建议,帮助工程师提升焊接质量和生产效率,避免常见错误操作。特别针对T2模式示教难题和外部轴协调运动提供了专业解决方案。

weixin_29040367的博客 185

Python从0到100(十九):Python标准库初探

哈希函数又称哈希算法或散列函数,是一种为已有的数据创建“数字指纹”(哈希摘要)的方法。哈希函数把数据压缩成摘要,对于相同的输入,哈希函数可以生成相同的摘要(数字指纹),需要注意的是这个过程并不可逆(不能通过摘要计算出输入的内容)。举一个简单的例子,用户注册时我们希望在数据库中保存用户的密码,很显然我们不能将用户密码直接保存在数据库中,这样可能会导致用户隐私的泄露,所以在数据库中保存用户密码时,通常都会将密码的“指纹”保存起来,用户登录时通过哈希函数计算密码的“指纹”再进行匹配来判断用户登录是否成功。

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 5004

linux中tab的应用,Linux应用之crontab定时任务的设置

|实现Linux定时任务有:cron、anacron、at等,这里主要介绍cron服务。名词解释:cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。软件包安装:要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作用如下:vixie-cron软件包是cron的主程序。crontabs软件包是用来安装、卸装、或列举用来驱动 cron...

weixin_32047035的博客 298

【C2000系列DSP的Bootloader详解】实现过程、流程图与示例代码

C2000 Bootloader 的核心逻辑可概括为 “初始化→选模式→加载程序→校验→跳转” 五步。对于小白来说,无需纠结底层寄存器配置(驱动库已封装),重点理解 “启动流程” 和 “数据传输 + 校验” 的核心思想即可。 通过本文的流程图和示例代码,相信你已经掌握了 C2000 Bootloader 的核心原理。实际开发中,可基于 TI 提供的 Bootloader 示例(C2000Ware 中自带)进行修改,快速适配自己的硬件和应用场景。

昔时扬尘处 371

Linux应用之crontab定时任务的设置

实现Linux定时任务有:cron、anacron、at等,这里主要介绍cron服务。 名词解释: cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。 软件包安装: 要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作用如下: vixie-cron软件包是cron的主程序。crontabs软件包是用来安装、卸装、...

weixin_33772645的博客 81

【DRAM存储器二十六】DDR4介绍-DDR4 SDRAM的主要技术特性之CA Parity、CRC Write date

详述DDR4的CA奇偶检验和写数据CRC校验功能

highman110的博客 1295

【系统分析师】核心考点:100个高频知识点汇总

本文系统梳理了系统分析师考试的11大领域高频考点,重点解析了计算机硬件与体系结构的7个核心知识点:计算机五大部件(CPU/存储器/总线等)、校验码类型(奇偶/海明/CRC)、CISC与RISC指令系统对比、总线分类与特性、RAID磁盘阵列级别、流水线技术原理及Flynn系统分类法。内容涵盖硬件组成、数据校验、指令架构、存储技术等关键概念,通过表格对比和公式说明,为考生提供结构化的知识框架与备考重点。

数据知道的博客 5569

linux应用之crontab定时任务的设置(补充说明)

linux应用之crontab定时任务的设置实现Linux定时任务有:cron、anacron、at等,这里主要介绍cron服务。名词解释:   cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。软件包安装:要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作用如下:vixie-cron软件包是cron的主程序。crontabs...

huangyinzhao的博客 274

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Linux crontab 定时任务

介绍 在我们日常工作中,经常会用到 crontab 去处理一些定时任务。如:定时备份数据库、会员积分过期清除等。通过 crontab 命令,我们可以按照我们不同的需求执行不同的定时任务。 格式说明 Linux * * * * * * - - - - - - | | | | | | | | | | | + year [optional] 年 | | | | +----

hxciwangbiao的专栏 1473

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Linux设置定时任务命令crontab详细解释

Linux设置定时任务命令crontab详细解释1、 crontab命令概念和意义2、检查是否安装了crontab命令3、crontab服务启动与关闭4、全局配置文件5、用户配置文件6、crontab文件格式7、特殊字符8、写脚本测试功能9、编写一条定时任务10、查询当前用户定时任务11、删除当前用户定时任务12、设置crond开机自动启动13、定时任务实例 1、 crontab命令概念和意义...

徊忆羽菲 108万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

crontab 定时任务时间格式设置

使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行如何往 cron 中添加一个作业?# crontab –e0 5 * * * /root/bin/backup.sh这将会在每天早上5点运行 /root/bin/backup.shCron 各项的描述以下是 crontab 文件的格式:{minute} {hour} {d...

resilient的博客 4万+

Linux Crontab 定时任务

Linux Crontab 定时任务linux内置的cron进程能帮我们实现这些需求,cron搭配shell脚本,非常复杂的指令也没有问题。cron介绍我们经常使用的是crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。/var/spool/cron/ 目录下存放的是每个用户包括r...

bizou7130的博客 121

windows(schtasks) linux(crontab) 定时任务执行

windows(schtasks) linux(crontab) 定时任务执行 windows schtasks命令行定时执行 创建每一个小时执行一次bat文本,bat不懂得可以自行百度,比较简单; schtasks /create /tn “My App” /tr “c:\1.bat” /sc minute /mo 60 其中的‘My App’是任务的名字, “c:\1.bat” 是执行的bat路径, 60是执行的时间间隔,minute是以分钟为单位 根据任务的名称查看任务 schtasks /query

weixin_43639743的博客 2958

Linux基础-crontab(定时任务)

一、概述 二、cron服务 三、crontab 命令

Passerby_Wang的博客 2134

Linux crontab循环执行定时任务

登陆 Linux 系统时,虽然输入的是自己的用户名和密码,但其实 Linux 并不认识你的用户名称,它只认识用户名对应的 ID 号(也就是一串数字)。Linux 系统将所有用户的名称与 ID 的对应关系都存储在 /etc/passwd 文件中。 说白了,用户名并无实际作用,仅是为了方便用户的记忆而已。 要论证 "Linux系统不认识用户名" 也很简单,在网络上下载过 ".tar.gz" 或 "...

小楼一夜听春雨,深巷明朝卖杏花 560
上一篇: Linux查看用户及分组
下一篇: MySql存储过程中的基本函数和需要用到的运算符
ChanRayLi
博客等级 码龄9年 6粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值