Cron守护进程
使用 Cron 在 Linux 上安排重复任务
Cron 是一个守护进程,用于安排您能想到的任何任务。它对于发送有关系统或程序统计信息的电子邮件、进行定期系统维护、进行备份或执行您能想到的任何任务都很有用。其他操作系统上也有类似的程序。在 Mac OS X 上,cron 已被另一个名为 launchd 的守护进程取代。在 Windows 上,您有一个恰如其名的“任务计划程序”。如果您渴望 Linux、基于 Gnome 的系统(如 Ubuntu)的 GUI,则包括 Gnome Schedule,它可以作为 cron 的一个不错的前端。
Cron守护进程
Cron 守护进程 Crond
cron 守护进程使用 crontab 文件来指定要运行的任务和时间。这些是文本文件,用于指定在特定时间间隔运行的命令。每个用户都可以拥有自己的 crontab 文件。还有系统范围的 crontab 文件,用于用户之间的协作或共享。cron 守护进程将检查存储在 var/spool/cron 中的用户 crontab 文件以及/etc/crontab和/etc/cron.d中的系统范围的 crontab 文件。它每分钟都会醒来执行此操作。
定时任务
Crontab 是用于列出 cron 守护程序使用的表的命令。我们也将用于加载 cron 守护程序的文件称为 crontab 文件。当我们使用crontab –e命令时,我们正在编辑/var/spool中的 crontab 。位于此处的文件采用不同的格式,不应直接编辑。编辑 Crontab 文件,又称创建 Cron 作业让我们开始编辑我们自己的用户 crontab 文件:klack@:~$ crontab -e
klack 没有 crontab - 使用一个空的< 选择一个编辑器。要稍后更改,请运行“select-editor”。1. /bin/ed<2. /bin/nano <---- easiest4. /usr/bin/vim.tiny选择 1-4 [2]:2
第一次尝试编辑 crontab 文件时,系统会要求我们选择一个编辑器。Nano 被标记为最简单的编辑器。继续并输入 2 选择 nano。Crontab 现在将创建您的 crontab 文件的临时副本并在 nano 中打开它进行编辑。当 nano 启动时,反复按 Ctrl-V 向下滚动到文件底部。您现在应该在新行上准备输入我们的第一个 cron 命令。
Crontab 格式
crontab 文件中的每一行都可以是变量定义或 cron 命令。不要忘记按 Enter 键以换行符结束最后一个命令。您也可以用 % 结束最后一个语句。这是导致命令失败的最常见错误,在这种情况下不会显示错误。Cron 命令具有独特的模式,允许您指定自定义重复时间。有五个字段用于指定要运行的时间和命令。
(分钟 0-59)(小时 0-23)(日期 1-31)(月份 1-12)(星期几 0-7)(命令)
Crontab 示例
以下是几个以不同时间间隔运行备份脚本的示例:0 5 1 * * ~/backup-home.sh
我们在此指定的是每月 1号的凌晨 5:00 运行此 backup-home.sh 脚本。* 表示通配符。在此示例中,任务在所有月份和一周中的任何一天运行。 0 5 1,15 * * ~/backup-home.sh
在此修改后的示例中,我们在月份日期字段中使用逗号来表示我们希望此任务在每个月的 1号和 15号运行。在此示例中,12/3 表示步长值。这意味着该命令将在每个季度的每月 1号凌晨 5 点 0 5 1 12/3 * ~/backup-home.sh
运行。此处,此备份脚本将在每天的 17、18、19 和 20 点运行。 此示例将每分钟运行一次。如果您认为必须使用这个,请小心! 结合这里的一些想法,此命令包含一个步长值,每两分钟运行一次。 这里我们使用了一个特殊的时间标记 @reboot 将在每次重启后运行一次。您还可以使用其他特殊时间关键字。以下是完整列表:* 17-20 * * * ~/backup-home.sh
* * * * * ~/backup-home.sh
*/2 * * * * ~/backup-home.sh
@reboot ~/backup-home.sh
@reboot :重启后运行一次。@yearly :每年运行一次@annually :每年运行一次@monthly :每月运行一次@weekly :每周运行一次@daily :每天运行一次@hourly :每小时运行一次
输入完预定命令后,按Ctrl-W并输入,将文件保存在 nano 中。然后按Ctrl-X退出。Crontab 现在将检查文件中是否有错误。如果没有发现错误,则 cron 守护程序使用的表将被更新,更改将立即生效。
Cron.hourly Cron.daily Cron.weekly Cron.monthly
为了轻松、无忧地使用 cron 作业,只需在 /etc/ 中的其中一个目录中创建一个文件,该任务将根据其所在的文件夹运行。但是,这样做会让你对时间的控制较少(一周中的什么时候?肯定是某个时候)。
cron.Allow 和 cron.Deny
这些文件可能位于 /etc 中,它们控制谁可以使用 crontab 命令。如果 cron.allow 存在,则只有其中列出的用户(每行一个用户)可以运行 crontab。如果 cron.allow 不存在,则任何用户都可以拥有 crontab 文件,除了 cron.deny 中列出的用户。如果这两个文件都不存在,则需要超级用户权限才能拥有用户 crontab 文件。
系统范围的 Crontab 文件
在较大的用户环境中,编辑 /etc/crontab 或 /etc/cron.d/ 中的文件可能更有益。这些文件也由 cron 守护程序加载。在较大的用户环境中,协作的用户可能希望将所有 crontab 文件存储并查看到中央位置。/etc/crontab 是一个单独的文件,它包含一个额外的字段,即用户字段。0 5 1 * * root ~/backup-home.sh
此系统 crontab 条目将以 root 身份运行。可以在 /etc/cron.d/ 目录中创建任何名称的文件。许多软件包都使用此目录,因为它可以提供更好的组织。
总结
现在,您应该能够使用脚本和 cron 守护程序(也称为 cron 作业)的组合来运行您能想到的任何任务。欢迎在下面的评论中留下任何问题。Linux Academy 成员可以在此处观看讲师指导的视频。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~