当前位置: 首页 > article >正文

【Linux】Linux命令:crontab

目录

      • 1、作用
      • 2、命令使用格式
      • 3、常用参数说明
      • 4、时程表
        • 4.1 格式
        • 4.2 常见问题处理
      • 5、示例


1、作用

  crontab命令用于对用户的时程表进行查看、删除、修改等操作。

  用户的时程表是用于记录着要定期执行的程序。当安装完Linux操作系统启动后, cron服务会定期执行时程表里的程序。所以,通过crontab命令我们就可以实现定期执行某些脚本。

2、命令使用格式

crontab [ -u user ] { -l | -r | -e }

3、常用参数说明

  • -u user:指定用户。表示对指定用户的时程表进行操作。未指定时,默认是执行该命令的用户。
  • -e:启动文字编辑器来设定时程表,内定的文字编辑器是 Vim
  • -r:删除目前的时程表
  • -l:列出目前的时程表

4、时程表

4.1 格式

  时程表每一行代表一个要定期执行的程序,每一行的格式如下:

f1 f2 f3 f4 f5 program
  • f1 表示分钟(0 - 59);
  • f2 表示小时(0 - 23);
  • f3 表示一个月份中的第几日(1 - 31);
  • f4 表示一年的第几个月(1 - 12);
  • f5 表示一个星期中的星期几(0 - 6);
  • program 表示要执行的程序;

注意f1 ~ f5都是用来设定程序的执行周期的,一个f就是一个条件,这5个条件要同时满足,程序才会执行。

f1 ~ f5的取值主要有以下几种情况:

  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,以此类推;
  • 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,以此类推;
  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,以此类推;
  • 当 f1 为 */n 时表示每 n 分钟执行一次,f2 为 */n 表示每 n 小时执行一次,以此类推;
  • 当 f1 为 a-b/n 时表示从第 a 分钟到第 b 分钟这段时间内每 n 分钟执行一次,f2 为 a-b/n 时表示从第 a 到第 b 小时这段时间内每 n 小时执行一次,以此类推;
4.2 常见问题处理

  时程表中的程序在你所指定的时间执行后,系统会发一封邮件给当前的用户,显示该程序执行的内容,若是你不希望收到这样的邮件,请在每一行空一格之后加上 > /dev/null 2>&1 即可,如:

20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh > /dev/null 2>&1 

  时程表中的脚本无法定时执行,但是在shell会话中可以正常执行。这个问题的主要原因是无法读取环境变量的原因。 解决方法有以下三种:

  • 1、所有命令需要写成绝对路径形式,如: /usr/local/bin/docker

  • 2、在 shell 脚本开头使用以下代码:

    #!/bin/sh
    
    . /etc/profile
    . ~/.bash_profile
    
  • 3、在 /etc/crontab 中添加环境变量,在可执行命令之前添加命令 . /etc/profile;/bin/sh,使得环境变量生效,例如:

    20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh
    

5、示例

0 */2 * * * /sbin/service httpd restart  意思是每两个小时重启一次apache 

50 7 * * * /sbin/service sshd start  意思是每天7:50开启ssh服务 

50 22 * * * /sbin/service sshd stop  意思是每天22:50关闭ssh服务 

0 0 1,15 * * fsck /home  每月1号和15号检查/home 磁盘 

1 * * * * /home/bruce/backup  每小时的第一分执行 /home/bruce/backup这个文件 

00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。

30 6 */10 * * ls  意思是每月的1、11、21、31日是的6:30执行一次ls命令


http://www.kler.cn/a/541374.html

相关文章:

  • Pdf手册阅读(1)--数字签名篇
  • 从零开始:使用Jenkins实现高效自动化部署
  • Spark 源码 | 脚本分析总结
  • 如何将3DMAX中的3D文件转换为AutoCAD中的2D图形?
  • 在 C# 中,处理 Excel 和 PDF 文件的库有很多。以下是一些比较常用的选择
  • golang 版 E签宝请求签名鉴权方式
  • SpringBoot和Spring主要区别
  • React Vite 项目增加 eslint 和 prettier
  • 【网络法医】基线取证和常见反取证技术
  • 【DeepSeek】Deepseek辅组编程-通过卫星轨道计算终端距离、相对速度和多普勒频移
  • Ajax-介绍
  • 深度学习|表示学习|Layer Normalization 全面总结|24
  • CSS入门学习笔记(二)
  • 客户端渲染和服务端渲染
  • bitcoinjs学习笔记0(预备知识)
  • SpringBoot 接口防抖的一些实现方案
  • Unity Dots理论学习-5.与ECS相关的概念
  • R18 2Rx XR devices
  • React 中的 useMemo 和 useCallback 有什么区别?
  • Gaea: 去中心化人工智能平台的未来
  • 智慧机房解决方案(文末联系,领取整套资料,可做论文)
  • 使用Qt+opencv实现游戏辅助点击工具-以阴阳师为例
  • ffmpeg -devices
  • Linux(20)——调度作业
  • java配置api,vue网页调用api从oracle数据库读取数据
  • vscode怎么更新github代码