惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Microsoft Security Blog
Microsoft Security Blog
云风的 BLOG
云风的 BLOG
MongoDB | Blog
MongoDB | Blog
Know Your Adversary
Know Your Adversary
K
Kaspersky official blog
人人都是产品经理
人人都是产品经理
IT之家
IT之家
Recorded Future
Recorded Future
Recent Announcements
Recent Announcements
D
DataBreaches.Net
C
CXSECURITY Database RSS Feed - CXSecurity.com
U
Unit 42
博客园 - 【当耐特】
I
Intezer
Cisco Talos Blog
Cisco Talos Blog
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
H
Help Net Security
L
LangChain Blog
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
Scott Helme
Scott Helme
The GitHub Blog
The GitHub Blog
博客园_首页
P
Proofpoint News Feed
大猫的无限游戏
大猫的无限游戏
S
Secure Thoughts
The Register - Security
The Register - Security
Engineering at Meta
Engineering at Meta
T
Threatpost
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Blog — PlanetScale
Blog — PlanetScale
C
Cybersecurity and Infrastructure Security Agency CISA
T
Troy Hunt's Blog
罗磊的独立博客
腾讯CDC
Simon Willison's Weblog
Simon Willison's Weblog
Security Latest
Security Latest
Last Week in AI
Last Week in AI
P
Privacy & Cybersecurity Law Blog
Latest news
Latest news
The Cloudflare Blog
Jina AI
Jina AI
小众软件
小众软件
Cloudbric
Cloudbric
TaoSecurity Blog
TaoSecurity Blog
F
Full Disclosure
V
V2EX

方寸之間

修复 Arch Linux 的内核缺失问题 - 方寸之間 安装定制化 Vim - 方寸之間 树莓派配置旁路由过程记录 - 方寸之間 Cloudflare Tunnel 不完全上手指南 - 方寸之間 解除 New Bing 地区和浏览器限制的方法 - 方寸之間 FRP 上手教程 - 方寸之間 深入理解 Linux nohup 命令 - 方寸之間 C++智能指针是什么 - 方寸之間 PGP 工作原理详解 - 方寸之間 如何恢复 Windows EFI 分区 - 方寸之間 Scaleway IPV6 server 申请及使用攻略 - 方寸之間 Arch Linux 升级系统提示签名无效 - 方寸之間 Arch Linux 音响有杂音的解决办法 - 方寸之間 Arch Linux 如何切换内核 - 方寸之間 Django 项目时区更改错误的解决方案 - 方寸之間 超简单的 Arch Linux + Windows 双启动教程 - 方寸之間 使用 UFW 配置 Linux 防火墙 - 方寸之間 Git 中的一个特殊 hash - 方寸之間 深入理解数据库事务 - 方寸之間 CRLF 和 LF 之间的区别与联系 - 方寸之間 DNS 的更新是如何工作的? - 方寸之間 如何快速查看 github 代码库中早期 commits - 方寸之間 黑科技:使用 GitHub 搭建自己的短链接服务 - 方寸之間 Build site with Franklin.jl - 方寸之間 iwd 的使用教程 - 方寸之間 超好用的 UML 工具推荐 - 方寸之間 ArchLinux 安装配置笔记 (Updated) - 方寸之間 如何将 Julia 添加到 Jupyter Notebook - 方寸之間 费曼技巧:最好的学习方式 - 方寸之間 How to Create Linux Desktop Entry - 方寸之間 Make a TODO robot with Github Actions - 方寸之間 C++继承 多态 虚函数 - 方寸之間 C++ inline 关键字详解 - 方寸之間 C++ Static 关键字详解 - 方寸之間 C++ type conversion notes - 方寸之間 Solution for _CRT_SECURE_NO_WARNINGS error - 方寸之間 IR Homework - 方寸之間 Customize Ubuntu themes, icons and Shell - 方寸之間 恢复右键菜单的新建命令 - 方寸之間 Hugo+Github 搭建个人博客 - 方寸之間
浅析 Linux 的 cron 命令 - 方寸之間
Mercas · 2020-12-03 · via 方寸之間

Cron 是 Linux 一个很有用的工具,也是开发人员最喜欢的工具,因为它可以让你使用通用脚本和特定于任务的脚本在特定的时间段、日期和间隔自动运行命令。有了该描述,你可以想象系统管理员如何使用它来自动执行备份任务、目录清除、通知等。

Cron 作业在后台运行,并不断检查/etc/crontab文件,/etc/cron.*//var/spool/cron/目录。我们最好不要直接编辑 cron 文件,因为每个用户都有唯一的 crontab。

那你应该如何创建和编辑 cron 作业?我们可以使用 crontab 命令。crontab 是用于创建,编辑,安装,卸载和列出 cron 作业的方法。

创建和编辑 cron 作业的命令是相同而且很简单。而且更酷的是,你无需在创建新文件或编辑现有文件后重新启动 cron。

Cron 语法#

就像使用任何语言一样,当你了解cron的语法时,使用cron会容易得多,它的语法有两种格式:

A B C D E USERNAME /path/to/command arg1 arg2

OR

A B C D E USERNAME /root/backup.sh

以上 cron 语法的说明:

  • A:分钟范围:0 – 59
  • B:时间范围:0 – 23
  • C:天数范围:1 – 31
  • D:月范围:1 – 12 or JAN-DEC
  • E:星期几0 – 6 or SUN-SAT,Sunday=0 or 7
  • USERNAME: 用户名
  • /path/to/command – 你要计划的脚本或命令的名称

形象一点表示就是:

┌───────────── minute (0 - 59)

│ ┌───────────── hour (0 - 23)

│ │ ┌───────────── day of the month (1 - 31)

│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)

│ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT, Sunday=0 or 7)

│ │ │ │ │

│ │ │ │ │

│ │ │ │ │

* * * * *

此外,Cron 使用 3 个运算符,可以在字段中指定多个值:

  1. 星号(*):指定字段的所有可能值,* * * * * 在每天的每分钟运行。
  2. 逗号(,):指定值列表,2,10 4,5 * * *在每天第 4 和第 5 小时的第 2 和第 10 分钟运行。
  3. 破折号(-):指定值范围,0 4-6 * * * 在第 4、5、6 小时的第 0 分钟运行。
  4. 分隔符(/):指定步长值,20/15 * * * * 从第 20 分钟到第 59 分钟每隔 15 分钟运行(第 20、35 和 50 分钟)。

Cron 的语法和运算符大概就这么多,下面展示一些 cron 示例。

Cron 工作示例#

运行 cron 命令的第一步是使用以下命令安装 crontab:

在每天凌晨 3 点运行/root/backup.sh

0 3 * * * /root/backup.sh

在每个月的第二天的下午 4<30>运行script.sh

30 16 2 * * /path/to/script.sh

在每周工作日的晚上10 点运行/scripts/phpscript.php

0 22 * * 1-5 /scripts/phpscript.php

在每天的午夜,凌晨 2 点和凌晨 4 点后的23 分钟,运行perlscript.pl

23 0-23 / 2 * * * /path/to/perlscript.pl

每个星期日的 04<05> 运行 Linux 命令:

5 4 * * sun /path/to/linuxcommand

Cron 选项#

列出 cron 作业。

crontab -l

# OR

crontab -u username -l

删除所有 crontab 作业。

删除特定用户的 Cron 作业。

Crontab 中的字符串#

字符串是开发人员最喜欢的东西,因为它们通过消除重复的书写来帮助节省时间。Cron 具有特定的字符串,可用于更快地创建命令:

  1. @hourly:每小时运行一次,即”0 * * * *
  2. @midnight:每天运行一次,即”0 0 * * *
  3. @daily:与午夜相同
  4. @weekly:每周运行一次,即”0 0 * * 0
  5. @monthly:每月运行一次,即”0 0 1 * *”
  6. @annually:每年运行一次,即”0 0 1 1 *
  7. @yearly:与**@annually**相同
  8. @reboot:每次启动时运行一次

例如,这是每天备份系统的方法:

@daily /path/to/backup/script.sh

至此,你已经拥有使用Cron创建和管理系统任务所需的全部内容。现在,你可以开始使用计划的命令来设置和维护多个环境。

当你对 Crontab 的工作方式了解得足够多时,可以使用这些漂亮的Crontab 生成器实用程序免费生成 crontab 行。

另外,你可以在此处阅读 Ubuntu 的有关如何使用 Cron 的文章。

参考#

https://www.tecmint.com/create-and-manage-cron-jobs-on-linux/

https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows