之前笔者是在本地写的博客,然后用 windows 定时任务启动写的脚本上传到 Github 上,现在又遇到了 Linux 上的定时任务,项目还要用到 Quartz 定时任务框架

1. 一次性定时任务 at

at 命令是用于一次的定时任务,使用起来十分简便,而且定时的日期多样化,注意其需要 atd 服务的支持

1.1 查询 atd 是否启动

一般系统(Linux)都自带并自启 atd,可用以下两个命令查询服务是否启动

$ systemctl status atd
# Active: active (running) $ ps -ef | grep atd
# root 1212 1 0 Jun14 ? 00:00:00 /usr/sbin/atd -f

1.2 at 命令格式

at 有两种命令,格式如下:

# 第一种
$ at 时间
$ > 输入要执行的内容
$ > EOF(Ctrl + D,表示输入结束)
# 第二种
$ 将要执行的命令 | at 时间

笔者下面使用第一种格式来演示命令的使用

1.3 at 命令参数

at 的命令参数也十分简单,看看就会使用了

$ at  [参数]  [时间]

	-l:待执行的任务列表
-d:删除指定的待执行任务
-m:任务执行完后向linux用户发送,即时没标准输出
-f:指定包含具体指令的任务文件
-q:指定新任务的队列名称
-c: 打印任务的内容到标准输出 $ atq 待执行的任务列表(等价于 $ at -l)
$ atrm 删除待执行的任务(等价于 $ at -d)

1.4 用例

$ date 查看当前时间
# Sat Jul 31 13:38:35 CST 2021 $ at 13:40
$ > ls >> at.out
$ > EOF # 然后就会在当前目录下看到一个 at.out 文件

2. 周期定时任务 crontab

crontab 命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似。系统会自动启动 crond 进程每分钟定期检查是否有要执行的任务

使用crontab需要知道了解几个概念:

  • crond:一个服务进程,每分钟去检查配置文件是否有要执行的任务
  • 任务文件:记录了需要执行的任务
  • crontab:修改任务文件的工具(即往配置文件里面增删定时任务)

2.1 配置文件

Linux下的任务调度分为:

  • 系统调度:系统周期性要执行的任务(写缓存到硬盘、日志清理等,在/etc/crontab文件中配置)
  • 用户调度:用户定期要执行的任务(数据备份、定时邮件等,在/var/spool/cron/用户名为名的文件中配置)

使用crontab命令的权限:

  • /etc/cron.deny:该文件中所列用户不允许使用crontab命令
  • /etc/cron.allow:该文件中所列用户允许使用crontab命令

脚本存放(我们还可以把脚本放在下面,让它每小时/天/星期/月执行一次):

  • /etc/cron.hourly
  • /etc/cron.daily
  • /etc/cron.weekly
  • /etc/cron.monthly

2.2 任务文件的格式

在crontab任务文件中,每一行代表一项任务。每行有六个字段,分别是:

minute    hour    day    month    week    command

* * * * * command 每1分钟执行一次command

3,15 * * * * command  每小时的第3和第15分钟执行
  • * :每分,每时,每日的意思
  • , :用逗号隔开,例如"2,5"表示第2和第5,不包括第4、第3
  • - :用中杠隔开,例如"2-5"表示"2,3,4,5"
  • / :表示间隔频率,例如 */2 ,是分为单位,则每2分钟执行一次
  • % :在crontab文件中表示换行,脚本或命令中则要%来转义

2.3 crontab 命令格式

$ crontab [选项] [参数]

	-e:直接编辑该用户的计时器设置
-l:列出该用户的计时器设置
-r:删除该用户的计时器设置
-u<用户名称>:指定要设定计时器的用户名称

2.4 示例

2.4.1 示例1

$ vim
# !/bin/sh echo "cron test" test.sh $ chmod +x test.sh $ crontab -e
* * * * * /root/test.sh # 每次执行会将控制台输出以邮件形式发送到对应的用户,用crontab -l可以查看有没有消息,具体内容在
$ cat /var/spool/mail/root

2.4.2 示例2

# 表示输入内容追加到log.txt中,而不是输出到屏幕
# 2表示错误输出也当成标准输出
* * * * * /root/test.sh >/dev/null 2>&1(默认是1,可以不写)
* * * * * /root/test.sh 1>/dev/null 2>&1
  • /dev/null:表示空设备,就是忽略其输出

  • 系统的3个默认I/O:

    • 0是标准输入(键盘)
    • 1是标准输出(屏幕),也是默认的
    • 2是标准错误
  • &:表示等同于,2>&1,表示2的输出重定向等同于1,如果在控制台调试,也就是屏幕上,方便调试

  • 1>/dev/null:表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息

  • 2>&1 表示错误输出等同于标准输出,标准输出已重定向到空设备,所以错误输出也重定向到空设备,不输出

At 、Crontabl定时任务的更多相关文章

  1. Linux定时任务调用sh文件

    1.编写sh文件 创建:vi test.sh 写入:date >> /xiaol/data.txt 2.默认创建的这个sh问件是没有执行权限的,修改权限 chmod 777 test.sh ...

  2. 180605-Linux下Crontab实现定时任务

    Linux下Crontab实现定时任务 基于Hexo搭建的个人博客,是一种静态博客页面,每次新增博文或者修改,都需要重新的编译并发布到Github,这样操作就有点蛋疼了,一个想法就自然而然的来了,能不 ...

  3. ubuntu 创建定时备份pg数据库定时任务

    ubuntu创建定时备份数据库定时任务 一.命令文件 创建db_back.sh #!/bin/bash echo "start backup" /usr/lib/postgresq ...

  4. Linux命令之Crontab定时任务,利用Crontab定时执行spark任务

    Linux命令之Crontab定时任务,利用Crontab定时执行spark任务 一.Linux命令之Crontab定时任务 1.1 常见Crontab任务 1.1.1 安装crontab 1.1.2 ...

  5. Java定时任务的常用实现

    Java的定时任务有以下几种常用的实现方式: 1)Timer 2)ScheduledThreadPoolExecutor 3)Spring中集成Cron Quartz 接下来依次介绍这几类具体实现的方 ...

  6. [转]Java实现定时任务的三种方法

    在应用里经常都有用到在后台跑定时任务的需求.举个例子,比如需要在服务后台跑一个定时任务来进行非实时计算,清除临时数据.文件等.在本文里,我会给大家介绍3种不同的实现方法: 普通thread实现 Tim ...

  7. 使用python crontab设置linux定时任务

    熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务.可以通过命令crontab -e编写任务.当然也可以直接写配置文件设置任务. 但是有时候希望通过脚本自动设置,比如我们应用 ...

  8. C#定时任务组件之FluentScheduler

    FluentScheduler是.NET开源处理定时任务组件 1.任务的创建注册 public static void TaskActionByMinutes(Action action, int c ...

  9. 浅谈 linux 例行性工作 crontab (linux定时任务)

    定时任务大家都挺说过,就好比你手机上的闹钟,到了指定的时候就会响起. 今天在对redis缓存进行定时储存时又操作了一把,发现一些细节,写的不好.大家就将就看吧, 首先 简单介绍一下linux 例行性工 ...

随机推荐

  1. Task05:SQL高级处理

    5.1 窗口函数 5.1.1 窗口函数概念及基本的使用方法 窗口函数也称为OLAP函数.OLAP 是OnLine AnalyticalProcessing 的简称,意思是对数据库数据进行实时分析处理. ...

  2. 【NX二次开发】点到矢量或直线的垂点

    已知p1.p2.v1求p0 求解: 通过P1点和P2点,先求出v2: 使用 UF_VEC3_dot(),v1点乘v2得到P0与P2之间的距离: 使用UF_VEC3_unitize()将v1单位化: p ...

  3. 『动善时』JMeter基础 — 47、JMeter的HTTP代理服务器详细介绍

    目录 1.HTTP代理服务器的添加 2.HTTP代理服务器界面详解 (1)State:状态 (2)Global Settings:全局设置 (3)Test Plan Creation:测试计划创建 ( ...

  4. 面试官:为什么Mysql中Innodb的索引结构采取B+树?

    前言 如果面试官问的是,为什么Mysql中Innodb的索引结构采取B+树?这个问题时,给自己留一条后路,不要把B树喷的一文不值.因为网上有些答案是说,B树不适合做文件存储系统的索引结构.如果按照那种 ...

  5. AVAssetWriter视频数据编码

    AVAssetWriter介绍 可以通过AVAssetWriter来对媒体样本重新做编码. 针对一个视频文件,只可以使用一个AVAssetWriter来写入,所以每一个文件都需要对应一个新的AVAss ...

  6. BIM,PIM接入GIS 需要解决的关键技术问题

    随着技术发展,跨界融合已经不是新鲜事物,近两年BIM.PIM+GIS一张图的提出,给行业注入了一股清流. 为GIS行业发展带来了新的契机,同时也带来了一些新的挑战.面对挑战,本文将剖析BIM.PIM+ ...

  7. 【题解】Luogu p2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat 树型dp

    题目描述 Bessie is planning the annual Great Cow Gathering for cows all across the country and, of cours ...

  8. NOIP模拟测试28「阴阳·虎·山洞」

    写这几个题解我觉得我就像在按照官方题解抄一样 阴阳 题解 将题目中给的阴阳看作黑色和白色 首先我们观察到最后生成图中某种颜色必须是竖着单调递增或竖着单调递减 类似这样 否则不满足这个条件 但合法染色方 ...

  9. IDEA打开文件时,关闭SonarLint自动扫描

    操作步骤 1 打开 Preferences mac快捷键:command+, 2 搜索 SonarLint,取消勾选Automatically trigger analysis,保存设置

  10. 安装VMwareTools

    2.1.挂载VMwareTools镜像