如何使用crontab自动化linux中的重复任务

想在Linux中节省时间并自动化关键进程吗?Crontab就是答案。...

利用crontab Linux命令自动化各种平凡和重复的任务,简化您的生活。这个优秀且易于使用的工具,结合一些脚本,不仅可以自动执行各种任务,还可以帮助避免简单的人为错误或遗忘。

Automate tasks with Crontab in Linux

在这里,您将了解什么是crontab,如何添加自动化作业,以及一些实际示例。

什么是克朗塔布(crontab)?

Crontab是一个后台进程,几乎在所有Linux机器上都在后台运行,用于按设置的时间间隔调度和执行自动任务。软件开发人员也经常使用它在后台运行耗时的任务。

这可以是任何事情,包括但不限于发送批量电子邮件,检查您的Twitter提要,执行备份,或只是执行提醒。

基本crontab命令

机器上的每个Linux用户都有自己的crontab文件,其中包含他们的活动crontab作业。下面是一些用于查看和修改crontab文件的基本终端命令:

  • crontab-l---列出所有crontab作业。
  • crontab-e---编辑crontab文件。
  • crontab-r---从crontab文件中删除所有条目。

以上命令将用于当前用户的crontab文件。如果需要修改其他用户的crontab文件,只需使用-u选项。例如,可以使用以下命令编辑jdoe用户的crontab文件:

sudo crontab -ujdoe -e

crontab作业的格式

每个crontab作业由一行组成,格式如下:

MINUTE HOUR DAY MONTH WEEKDAY COMMAND

下表说明了crontab作业的不同元素:

Element Ranage Description
分钟 0 - 59 执行crontab作业的分钟数。
小时 0 - 23 执行crontab作业的时间。
1 - 31 在上执行crontab作业的月份。
1 - 12 执行crontab作业的月份。
工作日 0 - 6 在上执行crontab作业的星期几。
命令   可以在终端上执行的任何Linux命令。

您可以在任何字段中使用星号(*)来表示通配符,这意味着crontab作业将在任何时间段执行。例如,下面的crontab作业将在每天凌晨3:20执行:

20 3 * * * /root/backup.sh

多个值

每个时间段还可以包括多个元素。您可以通过用逗号分隔来指定精确的值,下面的crontab作业将在每小时20和50分钟后执行一次:

20,50 * * * * /path/to/command.sh

但是,如果要在一个时间段内以特定的间隔执行crontab作业,可以使用*/period,并且下面的crontab作业将在每三个小时的15分钟后自动执行:

15 */3 * * * /path/to/command.sh

让crontab作业保持安静

根据具体情况,您可能希望消除crontab作业的所有输出,这样它们就不会出现在系统的邮件文件夹中。您可以通过将>/dev/null 2>&1附加到任何crontab作业来完成此操作。例如:

0 6 15 * * /path/to/backup.sh > /dev/null 2>&1

添加crontab作业

通常,添加或修改crontab作业最常用的方法是crontab-e命令。在终端中运行以下命令:

crontab -e

这将打开一个文本编辑器,比如nano,其中包含crontab文件的内容。每个crontab作业驻留在一行中,您可以根据需要添加、修改和删除行。完成后,按Ctrl+W保存并关闭文件,然后按Y和Enter键,这将立即激活文件中的所有crontab作业。

添加作业的快捷方式

除了手动修改crontab文件之外,您还可以运行一个快速的命令来添加作业。例如,如果要添加每个星期日下午2:00运行的crontab作业:

0 14 * * 0 /path/to/command.sh

可以使用以下单个命令将作业添加到crontab文件:

(crontab -l; echo "0 14 * * 0 /path/to/command.sh";) | crontab

上面的命令只是列出crontab文件中当前的所有作业,打印新作业,并将所有内容导入crontab以替换其内容。

列出/删除crontab文件

您可以使用以下命令列出crontab文件中当前处于活动状态的所有作业:

crontab -l

您还可以删除所有crontab作业,并使用以下命令清空crontab文件的内容:

crontab -r

示例:播放声音!

工作时需要每两小时快速提醒一次,让你知道时间已经过去了吗?抓取你最喜欢的几乎任何格式的音频剪辑(.wav,.mp4,任何东西),如果它保存在(例如)/home/myuser/我的警报.wav自动播放crontab作业:

0 */2 * * * aplay /home/myuser/myalert.wav

在每周五下午5点自动播放你最喜欢的歌曲,为你一周的工作做一个美好的送别怎么样?抓取你最喜欢的歌曲剪辑,如果保存在say/home/myuser/friday_歌曲.mp4您将添加crontab作业:

0 17 * * 5 aplay /home/myuser/friday_song.mp4

示例:使用rsync备份文件

crontab的许多优秀用途之一是能够自动将文件备份到远程服务器。通过这个优秀的rsync教程,您可以大大降低再次丢失重要数据的风险。

示例:检查站点是否联机

也许你想每五分钟自动检查一次各个网站是否在线,如果有网站关闭,你会通过电子邮件得到通知。这里有一个漂亮的小PHP脚本,可以做到这一点。

<?php// E-mail address to notify of sites down$email = '[email protected]';// Define URLs to check$urls = ['https://apexpl.io','https://google.com','https://some-junk-site-that-will-hopefully-never-exist.com'];// Go through URLs$down = [];foreach ($urls as $url) {// Check URL$status = check_url($url);if ($status != 200) {$down[] = $url;}}// Send e-mail if we have down sitesif (count($down) > 0) {mail($email, "Urgent - Sites Down!", "Your bot has detected the following sites are currently down:" . implode("", $down));}// Exitexit(0);/*** Check URL*/function check_url(string $url):int{// Send via cURL$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);$resp***e = curl_exec($ch);// Get status, and close connection$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($ch);// Returnreturn $status;}

只需在文件顶部修改电子邮件地址和所需的url进行检查,并将其保存在/home/myuser/check等位置_网站.php. 要使此脚本每五分钟运行一次,并通过电子邮件通知任何已关闭的站点,请添加crontab作业:

*/5 * * * * /usr/bin/php /home/myuser/check_sites.php > /dev/null 2>&1

自动化你的生活!

通过本文,您将有希望了解crontab的自动化功能,以及如何使用它来自动化您生活中许多平凡和重复的任务。

您已经了解了什么是crontab,关于crontab文件,crontab作业是如何格式化的,以及如何利用它的一些实际示例。

  • 发表于 2021-03-28 04:45
  • 阅读 ( 209 )
  • 分类:编程

你可能感兴趣的文章

如何在任何使用python的计算机上安装selenium webdriver

自动化已经成为软件开发行业的一个集成部分。许多框架已经开发出来,允许用户通过使用几行代码自动完成重复任务来增强工作流。 ...

  • 发布于 2021-03-10 21:27
  • 阅读 ( 476 )

你自己的社交网络:如何在linux上设置mastodon实例

... 你开始运行了:自动化任务和管理乳齿象 ...

  • 发布于 2021-03-14 07:42
  • 阅读 ( 272 )

windows与linux:以下是它们的共同点

... 6任务自动化 ...

  • 发布于 2021-03-14 16:05
  • 阅读 ( 287 )

制作一个树莓皮gmail通知灯

... 既然脚本可以工作了,是时候让它自动化了。最简单的方法是通过cron作业。Cron作业用于计划任务和脚本,例如自动备份。打开Crontab(计划任务列表): ...

  • 发布于 2021-03-17 17:32
  • 阅读 ( 226 )

4个linux自动化应用程序,简化您的任务和工作流

... 下面的四个自动化应用程序可以让您专注于对自己重要的事情,而不是繁琐的维护任务。这节省了你的时间和脑力,可以在其他地方得到更好的利用。 ...

  • 发布于 2021-03-21 21:10
  • 阅读 ( 260 )

使用rsync自动将文件备份到远程服务器

... 通过crontab自动化 ...

  • 发布于 2021-03-28 09:36
  • 阅读 ( 232 )

针对初学者系统管理员的10个linux强化提示

... CRON是一个健壮的Linux作业调度程序。它允许管理员使用crontab在Linux中调度任务。因此,限制谁可以运行CRON作业是至关重要的。您可以使用以下命令找出用户的所有活动cronjob。 ...

  • 发布于 2021-03-28 14:39
  • 阅读 ( 249 )

关于linux中bash for loops的所有知识

Bash脚本是一种高效的自动化任务的方法,特别是那些利用其他现有程序的任务。这种自动化通常需要重复几次类似的操作,这正是for循环进入自己的位置。 ...

  • 发布于 2021-03-29 06:22
  • 阅读 ( 313 )

如何在linux上删除用户(并删除所有跟踪)

...任何cron作业计划用于此用户帐户: sudo ls -lh /var/spool/cron/crontabs/eric 如果此位置中存在任何内容,则表示有cron作业排队等待该用户帐户。我们可以用这个crontab命令删除它们。-r(remove)选项将删除作业,-u(user)选项告诉crontab...

  • 发布于 2021-04-02 15:16
  • 阅读 ( 179 )

如何在linux上使用at和batch来调度命令

...cron中设置它,但是您必须记住在任务执行后返回并删除crontab条目,这很不方便。 对于Linux,如果你正在为一个问题而挣扎,这几乎可以保证其他人也在为这个问题而挣扎。幸运的是,因为类Unix的操作系统已经存在了很长时间,...

  • 发布于 2021-04-02 18:33
  • 阅读 ( 187 )
九秒七
九秒七

0 篇文章

相关推荐