在本期的《Linux 黑话解释》系列文章中,你将了解到 Linux 中的定时任务功能。你将通过学习编辑 crontab 文件来创建定时任务。

何为定时任务

cron是一个用于按计划运行短小且快速的命令的实用命令行工具。该工具是一个方便、经典的系统管理工具,通过和其他工具结合使用可以自动运行各式各样的任务。比如,有些人通过把rsync和cron结合使用,在特定的时间自动创建每日备份和每周备份。也有些人使用cron来分析服务器日志,并且结合邮件系统功能,在日志检测到错误时自动发送告警邮件。
cron就如同“瑞士军刀”一样,可以多场景多样化使用。尽可能发挥你的想象,去挖掘它的功能。
其实cron的使用很容易上手,只需要几秒钟。不过在我们开始上手之前,先来讨论下几个经常容易混淆的概念。

cron、定时任务、crontab

有三个术语比较容易混淆:cron、定时任务和crontab,让我们来看看它们的含义:

术语 含义
cron 这是安装在系统上的实际执行定时任务的 守护进程。
定时任务 “任务”是指一段启动并运行的程序。 cron  可以按照约定的时间计划运行各种任务,这样的任务通常叫做“定时任务”。
crontab 这是一个文件,用于定义定时任务。一个  crontab  文件可以通过表格形式(每一行就是一个定时任务)定义多个定时任务。

来看一个简单例子:创建一个定时任务,每小时向crontabl_log.txt文件打印Linux is cool!。

0 * * * * echo "Linux is Cool!" >> ~/crontab_log.txt

是不是这么个简单定时任务的例子都让你感到惊恐,这是因为你需要懂得如何去读懂一个定时任务的属性。
我将在后文中讲述这个基础理论知识。

上手 cron

我们通过另一个例子来看看cron如何工作。
为了创建定时任务(或者说cron将要执行的命令任务),你只需要运行:

crontab -e

这将会打开一个文件,用于编辑定时任务:

其中,所有以#开头的行都是注释,用于指导你如何使用cron,如果觉得没用可以删除它们。

我们将创建如下任务,作为我们的第一个定时任务:

* * * * * touch ~/crontab_test

让我快速看看该任务将会做什么:
定时任务都是以 “分钟 小时 天 月 周 命令” 形式呈现:
分钟:指该任务在哪一分钟会被执行。所以,该值为0则代表在每个小时开始时运行,5则代表在每个小时的第 5 分钟会运行。
小时:指该任务在一天中的哪个小时会被执行,取值范围为0-23。没有24的原因是23时的末尾是半夜11:59,然后就是每天的开始0时。分钟的取值范围定义逻辑与之类似。
天:指一个月中的哪一天执行该任务,取值范围是1-31(不同于前面的分钟和小时从0开始取值)。
月:指该任务在哪个月被执行,取值范围是1-12。
周:指该任务在星期几被执行,从周日开始算起,取值范围是0-6(分别对应周日、周一到周六)。
命令:是你想要运行的命令任务。

如果想对 “分钟 小时 天 月 周” 部分有更详细的理解,可以参考Crontab guru 网站,该网站可以帮助你理解正在执行什么。
接着之前的例子* * * * * touch ~/crontab_test,表示每分钟创建一次~/crontab_test文件。
让我们将该任务编辑进crontab然后看看执行结果:
等到下一分钟,你就会发现你的家目录下多了文件crontab_test:
这便是cron的基础应用示例。

一个实用的定时任务示例

假设你想创建一个脚本,用于拷贝多个目录内容到一个路径并打包作为备份,该如何实现?
通过cron定时任务就可以很容易实现该功能。
请看如下脚本:

#!/usr/bin/bash
echo "Backing up..."
mkdir -p ~/.local/tmp/
tar -Pc ~/Documents/ -f ~/.local/tmp/backup.gz

该脚本做了如下事情:

确保备份路径目录~/.local/tmp/存在。
将目录~/Documents/下的所有内容打包至文件~/.local/tmp/backup.gz。

我们先来手动运行该脚本,看看它到底如何工作。
首先,我们在家目录(~)下创建该脚本,命令为backup_script,如下图所示:
然后编辑backup_script脚本,写入上面那个脚本代码。
接着,赋予backup_script可执行权限:
最后运行脚本~/backup_script,进行功能验证:
你可以通过运行命令tar -xf ~/.local/tmp/backup.gz -C <output_dir>来进行备份恢复,这里<output_dir>;是指文件要恢复到的路径目录。
接下来,就可以用cron工具来进行定时任务运行该脚本了。
举个例子,假设需要每天的凌晨 3 点运行该备份脚本,你可以在crontab中输入如下命令:

* 3 * * * ~/backup_script

这样你就可以每天自动进行备份操作了。

后记

本文简单介绍了定时任务功能。尽管我不确定 Linux 桌面用户使用该功能多不多,但我知道定时任务功能被许多系统管理员广泛应用。

Linux 黑话解释:什么是定时任务相关推荐

  1. linux启动xorg进程,Linux 黑话解释:Xorg,X11,Wayland,什么是显示服务器

    原标题:Linux 黑话解释:Xorg,X11,Wayland,什么是显示服务器 您是否想知道X Server,Xorg,X11,Wayland以及诸如此类的东西到底是什么?Wayland vs Xo ...

  2. linux lts 含义,Linux 黑话解释:什么是长期支持(LTS)版本?什么是 Ubuntu LTS? - 爱绿豆...

    在 Linux 的世界里,特别是谈到 Ubuntu 的时候,你会遇到 LTS(长期支持Long Term Support)这个词. 如果你是一个经验丰富的 Linux 用户,你可能知道 Linux 发 ...

  3. linux lts版本的区别,Linux 黑话解释:什么是长期支持(LTS)版本?什么是 Ubuntu LTS?...

    在 Linux 的世界里,特别是谈到 Ubuntu 的时候,你会遇到 LTS(长期支持)这个词. (本文字数:1797,阅读时长大约:2 分钟) 在 Linux 的世界里,特别是谈到 Ubuntu 的 ...

  4. linux lts 含义,Linux 黑话解释:什么是 Ubuntu LTS?

    在 Linux 的世界里,特别是谈到 Ubuntu 的时候,你会遇到 LTS( 长期支持(Long Term Support))这个词. 如果你是一个经验丰富的 Linux 用户,你可能知道 Linu ...

  5. linux桌面环境是什么意思,Linux 黑话解释:什么是桌面环境?

    在桌面 Linux 世界中,最常用的术语之一就是 桌面环境(Desktop Environment)(DE).如果你是 Linux 的新手,你应该了解一下这个经常使用的术语. 什么是 Linux 中的 ...

  6. Linux进程中有xorg,Linux黑话解释:Xorg,X11,Wayland,什么是显示服务器

    您是否想知道X Server,Xorg,X11,Wayland以及诸如此类的东西到底是什么?Wayland vs Xorg,哪个更好?本指南就为你详细讲解. 您总是会遇到这些术语,并且知道它们与图形有 ...

  7. c语言 linux系统 delay,Linux下实现秒级定时任务的两种方案

    Linux下实现秒级定时任务的两种方案(Crontab 每秒运行): 第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command s ...

  8. 学习linux的好助手-linux命令解释工具

    有时候在听学习视频时,看到大佬输入没见过的linux命令行,就不知道什么意思. 现在可以通过在线工具Linux命令解释工具输入你的命令,就会告诉你什么意思,并且对每个参数进行了解释,简直是菜鸟的福音. ...

  9. 显示部分x_Linux 黑话解释:什么是显示服务器,用来做什么? | Linux 中国

    导读:在 Linux 相关的文章.新闻和讨论中,你会经常遇到显示服务器.Xorg.Wayland 等名词.本文字数:1882,阅读时长大约:2分钟https://linux.cn/article-12 ...

最新文章

  1. c语言编写弹窗提示是否确认退出_世人觉得C语言和C++太难?没前途?过来人告诉你真相...
  2. 前端构建工具gulpjs的使用介绍及技巧 (转)
  3. css-modules 简介
  4. java星际小战_首届中国星际战队联赛:TSG夺冠,小hero刘建宏大战惊天地泣鬼神...
  5. LiveVideoStackCon讲师热身分享 ( 五 ) —— 建立中国自主视频技术生态
  6. 某企业管理软件开发公司校园招聘的小组讨论面试题
  7. ie11java阻止_企业IT管理员IE11升级指南【10】—— 如何阻止IE11的安装
  8. 总被审稿人提起的多重假设检验校正是什么?
  9. windows查看端口号占用
  10. 数据分箱4——卡方最优分箱 ChiMerge算法使用(有监督)
  11. WordPress中自带的处理AJAX请求的HOOK
  12. 4.业务架构·应用架构·数据架构实战 --- 业务驱动的应用架构设计
  13. windows安装python3步骤_windows下python3第三方库安装方法总结
  14. win10c盘扩容_三招给你的C盘瘦身
  15. NetBIOS协议和NBNS协议
  16. 深度学习花书+机器学习西瓜书电子版我找到了
  17. 微商新传奇奢瑞小黑裙、两家小程序内测成员都来这了,SDCC2016微信开发专题议题揭晓...
  18. paypal标准支付流程图
  19. 七夕送你最特别的礼物 限时竞拍咯~
  20. 微信小程序-组件样式覆盖

热门文章

  1. 如何通俗解释欧拉公式?
  2. AI基础:入门人工智能必看的论文【附下载链接】
  3. 32岁程序员,失业4个月45次面试经历,与君共勉
  4. 线性回归api深度介绍
  5. 技术14期:关于深度学习中耳熟能详的Embedding
  6. 面向软件工程师的卡尔曼滤波器
  7. 暑假想打比赛,小白怎么从0入门?
  8. React Native小白入门学习路径——五
  9. 使用Spring框架实现远程服务暴露与调用
  10. “安全即代码”:整合安全团队和DevOps团队