0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux计划任务cron详解

马哥Linux运维 来源:博客园划边逅 2025-02-07 15:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

一、cron服务

cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。

service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态

二、cron的配置文件:

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

三、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的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

MAILTO=root:是说,当 /etc/crontab 这个档案中的例行性命令发生错误时,会将错误讯息或者是屏幕显示的讯息传给谁?由于 root 并无法再用户端收信,因此,我通常都將这个 e-mail 改成自己的账号,好让我随时了解系统的状态!

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

Linux下的计划任务--crontabLinux下的计划任务--crontab

091d43ce-e51e-11ef-9310-92fbcf53809c.png


root@ubuntu:~/codelab# cat /etc/crontab   
# /etc/crontab: system-wide crontab  
# Unlike any other crontab you don't have to run the `crontab'  
# command to install the new version when you edit this file  
# and files in /etc/cron.d. These files also have username fields,  
# that none of the other crontabs do.  
SHELL=/bin/sh  
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin  
# m h dom mon dow user  command  
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly  
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )  
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )  
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )  
#

01 * * * * root run-parts /etc/cron.hourly:在 #run-parts 这一行以后的命令,我们可以发现,五个数字后面接的是 root ,这一行代表的是『执行的级别为root身份』当然,你也可以将这一行改为成其他的身份!而 run-parts代表后面接的 /etc/cron.hourly 是『一个目录内(/etc/cron.hourly)的所有可执行文件』,也就是说,每个小时的01分,系统会以root身份去/etc/cron.hourly这个目录下执行所有可执行的文件!后面三行也是类似的意思!你可以到 /etc/ 底下去看看,系统本来就预设了这4个目录!你可以将每天需要执行的命令直接写到/etc/cron.daily即可,还不需要使用到crontab -e的程式!

五、权限

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命令。

AIX 中 普通用户默认都有 crontab 权限,如果要限制用户使用 crontab ,就需要编辑/var/adm/cron/cron.deny
HP-UNIX 中默认普通用户没得crontab 权限 ,要想放开普通用户的crontab 权限可以编

六、创建cron脚本

第一步:写cron脚本文件,命名为crontest.cron。


15,30,45,59****echo"xgmtest.....">>xgmtest.txt表示,每隔15分钟,执行打印一次命令

第二步:添加定时任务。执行命令 “crontab crontest.cron”。搞定
第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

注意:这操作是直接替换该用户下的crontab,而不是新增

七、crontab用法

crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。
每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的

在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
每个域之间使用空格或者制表符分隔。格式如下:

minute hour day-of-month month-of-year day-of-week commands
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday)


Linux下的计划任务--crontabLinux下的计划任务--crontab
除了数字还有几个个特殊的符号就是""、"/"和"-"、",",代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

-l 在标准输出上显示当前的crontab。
-r 删除当前的crontab文件。
-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。

八、例子:

每天早上6点


06***echo"Goodmorning.">>/tmp/test.txt//注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时


0*/2***echo"Haveabreaknow.">>/tmp/test.txt

晚上11点到早上8点之间每两个小时和早上八点


023-7/2,8***echo"Haveagooddream">>/tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3 command line

1月1日早上4点

0 4 1 1 * command line SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //当运行一个可执行文件时,DOS会先在当前目录中搜索该文件,若找到则运行之;若找不到该文件,则根据PATH命令所设置的路径,顺序逐条地到目录中搜索该文件;若有两条以上,各路径之间以一个分号“;”隔开
每小时执行/etc/cron.hourly内的脚本
01 * * * * root run-parts /etc/cron.hourly、
 
每天执行/etc/cron.daily内的脚本
02 4 * * * root run-parts /etc/cron.daily
 
每星期执行/etc/cron.weekly内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly
 
每月去执行/etc/cron.monthly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly
 
注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。
每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。
5,15,25,35,45,55 16,17,18 * * * command
 
每周一,三,五的下午3:00系统进入维护状态,重新启动系统。
00 15 * * 1,3,5 shutdown -r +5
 
每小时的10分,40分执行用户目录下的innd/bbslin这个指令:
10,40 * * * * innd/bbslink
 
每小时的1分执行用户目录下的bin/account这个指令:
1 * * * * bin/account
 
每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):
20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)
 
每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。
12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txtx

链接:https://www.cnblogs.com/chendezhen/p/16833140.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11849

    浏览量

    219759
  • WINDOWS
    +关注

    关注

    4

    文章

    3710

    浏览量

    94418
  • 文件
    +关注

    关注

    1

    文章

    599

    浏览量

    26160

原文标题:Linux计划任务神器:助你轻松玩转自动化,效率提升100%!

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux应用--日志定时清理

    脚本加入到系统计划任务,到点自动执行: 30 0 * * * /home/apache-tomcat-7.0.55-13-990*/webapps/ProxyServer2.0/WEB-INF/logs
    发表于 07-09 08:12

    详解linux定时任务

    定时执行程序,实现脚本中的功能,在linux是通过etc/init.d/crond这个服务来实现计划任务
    发表于 07-25 06:12

    Linux操作系统定时任务系统Cron入门分析

    分享到: cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于CronLinux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务: /s
    发表于 11-07 10:12 0次下载

    PHP简单实现不依赖于Unix系统Cron的定时任务程序资料说明

    本文档的主要内容详细介绍的是PHP简单实现不依赖于Unix系统Cron的定时任务程序资料说明。
    发表于 03-01 16:52 2次下载
    PHP简单实现不依赖于Unix系统<b class='flag-5'>Cron</b>的定时<b class='flag-5'>任务</b>程序资料说明

    Firefox 75附带一个新的计划任务 可自动收集遥测数据以帮助Mozilla改进这款浏览器

    外媒报道称,几天前发布的 Firefox 75 软件,在 Windows 中附带了一个新的计划任务。在用户选择开启之后,它便可每日收集可用的遥测数据,以帮助 Mozilla 改进这款浏览器。其实早在
    的头像 发表于 04-10 16:12 2207次阅读

    linux定时任务如何判断文件差异?

    本文能学到•busybox为例粗略跟踪软件执行过程方法•如何判断文件差异•cron任务计划文件要求 1. 背景 无意中瞟一眼出厂产品的日志文件 /app/recode 大小居然有9MB,按照
    的头像 发表于 03-17 10:05 2056次阅读

    浅析怎么在Linux上使用cron定时器

    基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。 Linux系统的优势 1、Linux系统所有组件的源代码都是自由的 2、Linux系统能有效保护学习成果 3、
    的头像 发表于 01-30 11:37 2797次阅读

    浅析Wireshark流量添加计划任务行为检测

    at命令是Windows自带的用于创建计划任务的命令,但是at命令只在2003及以下的版本使用。
    的头像 发表于 10-19 09:10 1944次阅读

    Linux系统的编程任务计划

    命令crontab -e实际上是打开了/var/spool/cron/username文件(如果用户是root,则打开的是/var/spool/cron/root)。打开这个文件使用了vim编辑器,所以保存时在命令行模式下输入:wq即可。
    发表于 12-28 09:25 830次阅读

    定时任务cron的教学

    格式 {秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)} 用法 "30 * * * * ? " 每半分钟触发任务 "30 10 * * * ? " 每小时的10分30秒
    的头像 发表于 01-13 15:18 1842次阅读

    如何动态修改cron参数呢?

    按正常来讲,修改定时任务的执行周期,把服务停下来,改下任务cron参数,再重启服务就搞搞定了。这种方式很简单,没有可说的,但是有没有一种可能,在不停服务的情况下,就可以动态的修改任务
    的头像 发表于 04-12 11:04 2813次阅读

    Linux如何使用cron进行定时任务的操作

    计划执行命令对于计算机来说非常重要,因为假如我亲自去执行一些任务的话,可能会因为多方面因素不能按时执行,所以定时任务就显得非常重要了! cron就是一个能够执行定时
    的头像 发表于 05-12 16:27 2845次阅读

    linux定时任务的用法总结

    习惯了使用 windows 的计划任务,使用 linux 中的 crontab 管理定时任务时很不适应。
    的头像 发表于 08-14 18:16 1752次阅读
    <b class='flag-5'>linux</b>定时<b class='flag-5'>任务</b>的用法总结

    Linux计划任务crontab运行脚本不正确的问题

    写好的程序希望在崩溃之后能够自启动,于是利用linux的crontab功能,添加一个计划任务,每分钟执行一个脚本查看需要监控的进程是否还在,如果不在则启动之,否则不做任何事情。这么一个简单的脚本在crontab中运行和在shell终端手工运行的结果却不一样。
    的头像 发表于 10-23 13:36 1500次阅读

    Linux计划任务介绍

    1.计划任务(定时任务)基本概述 1.什么是crond crond就是计划任务,类似于我们平时生活中的闹钟。定点执行。 2.为什么要使用crond crond主要是做一些周期性的任务
    的头像 发表于 11-24 15:49 1403次阅读