Linux crontab命令定时任务详解

这篇具有很好参考价值的文章主要介绍了Linux crontab命令定时任务详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件,与Windows下的计划任务类似。当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程。crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

        Linux下的任务调度分为两类,系统任务调度和用户任务调度。系统任务调度是系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

        Linux下的crontab是一个用于设置周期性被执行的任务的工具。用户可以使用crontab命令来编辑、查看或删除定时任务。在Linux系统中,crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。

        crontab储存的指令被守护进程激活,通常被称为cron jobs。crond在后台运行,每一分钟检查是否有预定的作业需要执行。如果使用控制文件被修改了,cron守护进程(crond)不必被重启,而是直接读取文件。

一、crond服务管理命令

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

        安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的。crond 进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务。

执行命令如下:

(base)[root@uat ~]#service crond start
Redirecting to /bin/systemctl start crond.service
(base)[root@uat ~]#service crond stop
Redirecting to /bin/systemctl stop crond.service
(base)[root@uat ~]#service crond restart
Redirecting to /bin/systemctl restart crond.service
(base)[root@uat ~]#service crond reload
Redirecting to /bin/systemctl reload crond.service
(base)[root@uat ~]#service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2023-12-24 16:16:49 CST; 12s ago
  Process: 8293 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 7518 (crond)
    Tasks: 1
   Memory: 640.0K
   CGroup: /system.slice/crond.service
           └─7518 /usr/sbin/crond -n
                                                                                                                                                                                 
12月 24 16:16:49 uat.drd.gzhxrcb systemd[1]: Started Command Scheduler.
12月 24 16:16:49 uat.drd.gzhxrcb crond[7518]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 86% if used.)
12月 24 16:16:49 uat.drd.gzhxrcb crond[7518]: (CRON) INFO (running with inotify support)
12月 24 16:16:49 uat.drd.gzhxrcb crond[7518]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
12月 24 16:16:55 uat.drd.gzhxrcb systemd[1]: Reloading Command Scheduler.
12月 24 16:16:55 uat.drd.gzhxrcb systemd[1]: Reloaded Command Scheduler.
12月 24 16:17:01 uat.drd.gzhxrcb crond[7518]: (CRON) INFO (running with inotify support)

二、crontab 命令

        crontab 命令是通过 /etc/cron.allow 和 /etc/cron.deny 文件来限制某些用户是否可以使用 crontab 命令的。

        命令使用原则:

· 如果两个文件都不存在,则只有root用户才能使用crontab命令。
· 如果cron.allow存在, cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。
· 如果cron.deny存在, cron.allow不存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。
· /etc/cron.allow优先级高于/etc/cron.deny
· 都存在情况下,只有写入/etc/cron.allow文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。若用户同时有/etc/cron.allow和/etc/cron.deny中,则/etc/cron.deny被忽略。

        Linux系统默认只有/etc/cron.deny文件,如下图所示:

Linux crontab命令定时任务详解,实战经验,LInux,linux,运维,服务器,CROND,CRONTAB,学习笔记

2.1 crontab 命令格式

[root@localhost ~]# crontab [选项] [file]

说明:

  • file: 命令文件的名字,表示将file 作为 crontab的任务列表文件并载入 crontab;若在命令中未指定文件名,则上命令将受标准输入(键盘)上键入的命令,并将它们键入 crontab。
  • 选项
    • -u:user 用来设定某个用户的crontab服务。(用户的 crontab 服务,此选项一般有 root 用户来运行)
    • -e:编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
    • -l:显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
    • -r:从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
    • -i:在删除用户的 crontab 文件时,给确认提示。

示例:

        查看内在使用情况:

Linux crontab命令定时任务详解,实战经验,LInux,linux,运维,服务器,CROND,CRONTAB,学习笔记

        有一天我发现框中的区域即缓存的内存非常的高,可用内在非常的低,有一些应用启动不起来,于是写了一个清缓存的脚本,如下:

[root@drd app]# vi cleanBuffCache.sh
#!/bin/bash
echo "开始清理缓存"
# 写入硬盘,防止数据丢失
sync;sync;sync;
# 延迟10S
sleep 10
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
echo "清理缓存结束"

        然后配置crontab如下:

[root@drd app]# crontab -e
0 0 * * * /home/***文件绝对路径***/cleanBufferCache.sh

        当“crontab -e”编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入 /var/spool/cron/ 目录中,每个用户的定时任务用自己的用户名进行区分。而且 crontab 命令只要保存就会生效,只要 crond 服务是启动的。

        然后使用 service crond reload 命令重新载入配置,使刚刚配的任务生效。(或者用service crond restart 或 service crond stop 再service crond start 均可)

2.2 任务配置说明

语法:

minute hour day month week command

        如上配置0 0 * * * /home/***文件绝对路径***/cleanBufferCache.sh

  • 第一个0(minute):表示一小时当中的第0分钟,可用 * 表示任务分钟。取值范围 0 ~ 59
  • 第二个0(hour):表示一天当时第0小时,可用* 表示任务小时。取值范围 0 ~ 23
  • 第三个 *(day):表示一个月当中的第几天。取值范围 1 ~ 31
  • 第四个* (month):表示一年当中的第几个月。取值范围 1 ~ 12
  • 第五个* (week):表示一周当中的星期几。0 ~ 7 (0 和 7 是星期日)
  • 第六个参数(command):要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。(本示例为可执行的脚本文件)

特殊符号说明:

  • * (星号):表示任务时间。如第一个(左边第一个)代表一小时中每分钟都执行一次的意思。
  • ,(逗号):表示不连续的时间。如 0,15,25 * * * * 表示每小时0分钟、15分钟 和 25分钟都执行一次命令。
  • -(中杠):表示连续的时间范围。如 0 8-12 * * * 表示8点到12点0分都执行一次命令。
  • /(正斜线):表示每隔多久执行一次。比如 */25 * * * * ,表示每隔25分钟执行一次命令。

示例:

配置规则 说明
45 22 * * * 在 22 点 45 分执行命令
0 17 * * 1 在每周一的 17 点 0 分执行命令
0 5 1,15 * * 在每月 1 日和 15 日的凌晨 5 点 0 分执行命令
40 4 * * 1-5 在每周一到周五的凌晨 4 点 40 分执行命令
*/10 4 * * * 在每天的凌晨 4 点,每隔 10 分钟执行一次命令
0 0 1,15 *
在每月 1 日和 15 日,每周一个 0 点 0 分都会执行命令,注意:星期几和几日最好不要同时出现,因为它们定义的都是天,非常容易让管理员混淆
0 6 * * *
每天早上6点执行
0 */2 * * *
每两个小时
0 11 4 * 1-3
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 4 1 1 *
1月1日早上4点

推荐Crontab命令​执行时间工具网站:crontab执行时间计算 - 在线工具可以此网站来测试和验证CRON表达式的执行计划。   

2.3 配置规则注意事项

  • 6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
  • crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
  • 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理变得混淆。
  • 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。

易踩坑:2.2 第六个参数 command是一个可执行命令和可执行的文件,若此参数是文件一定要把这个文件的权限修改为可执行的文件,否则不生效。文章来源地址https://www.toymoban.com/news/detail-761159.html

到了这里,关于Linux crontab命令定时任务详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux定时任务详解&crontab -e 编辑之后如何保存并退出(Ubuntu)

    1. 保存 操作命令如下: crontab -e 打开crontab的配置文件,并编辑完成 Ctrl + O 写入内容, 出现 File name to Write ... ,输入 Enter Ctrl +X 保存并输出,保存完成 service cron restart , 重启 crontab 定时任务 2. 验证 两种验证方式: 使用 crontab -e 命令打开任务配置文件,此时可以看到刚才保

    2024年01月17日
    浏览(46)
  • Linux--crontab命令详解--循环执行的计划任务

    循环执行任务是由cron(crond)这个系统服务来控制的。用户想要建立循环的计划任务时,使用的是crontab这个命令,为了避免安全性的问题,和at一样,我们可以限制使用crontab的账号,可以使用的配置文件有: /etc/cron.allow 将可以使用crontab的账号写入,不在这个文件中的账户则不能使用cr

    2024年02月16日
    浏览(47)
  • Crontab(定时任务)使用: Linux-Centos7使用crontab制定定时任务,定时执行某任务

    参考:https://blog.csdn.net/m0_49605975/article/details/120701771 1.用yum命令安装Crontab 2.启动,关闭,重启 3.设置开机启动 1.设置定时任务-进入编辑模式 -和vim操作一至 2.查看定时任务列表 3.添加定时任务 样例: 添加一个定时任务,定时清空某个文件夹里面日志文件的内容 3.1 编写一个清

    2024年02月01日
    浏览(74)
  • 【Linux】crontab 定时任务

    当你需要在Linux系统中定期执行某些任务时,crontab(cron table)是一个非常有用的工具。它允许你根据预定的时间表创建和管理定时任务。 按照进程的功能和运行的程序分类,进程可划分为两大类。 系统进程 :可以执行 内存资源分配和进程切换等 管理工作;而且,该进程的

    2024年02月10日
    浏览(55)
  • Linux 定时任务调度(crontab)

    Crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 可以使用Crontab定时处理离线任务,比如每天凌晨2点更新数据等,经常用于系统任务调度。 一般Linux系统中都会装有Crontab,如果没有安装可以使

    2024年02月07日
    浏览(74)
  • Linux 定时任务 crontab 用法学习整理

    lsb_release -a linux中crontab命令用于设置周期性被执行的指令,该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。cron 系统调度进程。可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。cron是系统主要的调度

    2024年02月11日
    浏览(44)
  • Linux通过crontab定时执行脚本任务

    在Linux中可以使用crontab来定时执行脚本。crontab是一个用于管理定时任务的工具,可以让在特定的时间间隔内自动运行脚本或命令。 需求 : 在Linux中每分钟写入一条信息到指定文件中,使用 cron 来定期执行一个写入命令或脚本 首先,在 home 目录下创建一个名为 testscript.sh 的脚

    2024年02月17日
    浏览(50)
  • linux-crontab每分钟定时执行/定时任务调度

    本文讲解linux上如何调用定时任务,如每分钟打印日志,每日24点执行日志切割脚本等等。 在Linux系统中,crontab命令是一个用于执行定时任务的命令, crond(crontab)是系统默认自带的定时服务 。我们可以通过编辑crontab文件来设置定时任务,使系统可以自动按照设定的时间和频率

    2024年02月06日
    浏览(58)
  • Linux学习笔记-Ubuntu下使用Crontab设置定时任务

    白衣沽酒绮罗生 百代繁华一朝都,谁非过客;千秋明月吹角寒,花是主人。 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο

    2024年02月04日
    浏览(43)
  • 【Linux】在服务器上创建Crontab(定时任务),自动执行shell脚本

    业务场景:该文即为上次编写shell脚本的姊妹篇,在上文基础上,将可执行的脚本通过linux的定时任务自动执行,节省人力物力,话不多说,开始操作! 连上服务器后,在任意位置都可以执行: crontab -e 如果没有进入 编辑cron任务模式 根据提示查看我们的服务器上是否未安装crontab没有则

    2024年02月14日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包