总结:LinuxCron实用程序是一种在特定时间和/或日期连续安排例行后台作业的有效方法。本文介绍了15个有用的crontab作业调度示例。本文分享自华为云社区《Linux Crontab:15 个很好用的 Cron 工作示例》,作者:Tiamo_T。经验丰富的Linux系统管理员知道在后台自动运行例行维护作业的重要性。LinuxCron实用程序是一种在特定时间和/或日期连续安排例行后台作业的有效方法。本文介绍了15个有用的crontab作业调度示例。LinuxCrontab格式MINHOURDOMMONDOWCMD1。在特定时间安排作业cron的基本用法是在特定时间执行作业,如下所示。这将在6月10日上午8:30执行完整备份shell脚本(完整备份)。请注意,时间字段使用24小时格式。因此,上午8点使用8,晚上8点使用20。30081006*/home/ramesh/full-backup?30–30分钟?08–08am?10–第10天?06–第6月(六月)?*–一周中的每一天2.安排作业多个实例(例如,每天两次)以下脚本每天执行两次增量备份。本例每天11:00和16:00执行指定的增量备份shell脚本(incremental-backup)。字段中的逗号分隔值指定需要在所有提到的时间执行该命令。0011,16***/home/ramesh/bin/incremental-backup?00-0分钟(整点)?11,16-上午11点和下午4点?*-每天?*-每个月?*–每个星期几3.在特定时间范围内安排工作(例如,仅在工作日)如果您希望在特定时间范围内每小时安排一次工作,请使用以下命令。每天工作时间的CronJob这个例子在每天早上9点到下午6点的工作时间(包括周末)检查数据库的状态0009-18***/home/ramesh/bin/check-db-status?00–第0分钟(整点)?09-18–上午9点、上午10点、上午11点、上午12点、下午1点、下午2点、下午3点、下午4点、下午5点、下午6点?*–每天?*–每个月?*–一周中的每一天CronJob每个工作日的工作时间此示例在每个工作日(即不包括周六和周日)上午9点到下午6点之间检查数据库Status0009-18**1-5/home/ramesh/bin/check-db-status00–第0分钟(整点)09-18–9am、10am、11am、12am、1pm、2pm、3pm、4pm、5pm、6pm?*–daily?*–monthly?1-5-星期一、星期二、星期三、星期四和星期五(每个工作日)4.如何查看Crontab条目?查看当前登录用户的Crontab条目要查看您的crontab条目,请从您的unix帐户键入crontab-l,如下所示。ramesh@dev-db$crontab-l@yearly/home/ramesh/annual-maintenance*/10****/home/ramesh/check-disk-space[注意:显示当前登录用户的crontab]查看RootCrontabEntry以root用户(su–root)身份登录并执行crontab-l,如下所示。root@dev-db#crontab-lnocrontabforrootCrontabHowTo:查看其他Linux用户的Crontab条目要查看其他Linux用户的crontab条目,请登录到root并使用-u{username}-l,如下所示。root@dev-db#crontab-usathiya-l@monthly/home/sathiya/monthly-backup0009-18***/home/sathiya/check-db-status5.如何编辑Crontab条目?编辑当前登录用户的Crontab条目要编辑crontab条目,请使用crontab-e,如下所示。默认情况下,这将编辑当前登录的用户crontab。ramesh@dev-db$crontab-e@yearly/home/ramesh/centos/bin/annual-maintenance*/10****/home/ramesh/debian/bin/check-disk-space~"/tmp/crontab.XXXXyjWkHw"2L,83C[注意:这将在Vim编辑器中打开crontab文件进行编辑。请注意cron创建了一个临时文件/tmp/crontab.XX...]当您使用:wq保存上述临时文件时,它将crontab保存,出现如下信息,说明crontab修改成功。~"crontab.XXXXyjWkHw"2L,83Cwrittencrontab:installingnewcrontab编辑rootCrontabentry以root用户(su–root)登录并执行crontab-e如下所示。root@dev-db#crontab-e编辑其他Linux用户的Crontab文件条目要编辑其他Linux用户的crontab条目,请以root身份登录并使用-u{username}-e,如下所示。root@dev-db#crontab-usathiya-e@monthly/home/sathiya/fedora/bin/monthly-backup0009-18***/home/sathiya/ubuntu/bin/check-db-status~~~“/tmp/crontab.XXXXyjWkHw”2L,83C6。使用Cron每分钟安排一个作业。理想情况下,您可能不需要每分钟都安排作业。但是理解这个例子将有助于你理解本文下面提到的其他例子。*****CMD表示所有可能的单位——即一年中的每个小时的每一分钟。除了直接使用这个*之外,您可能会发现它在以下情况下很有用。?当您在分钟字段中指定*/5时,表示每5分钟一次。?当您在分钟字段中指定0-10/2时,表示前10分钟内每2分钟一次。?因此,上述约定可用于所有其他4个字段。7.每10分钟安排一次后台cron作业。如果要每10分钟检查一次磁盘空间,请使用以下方法。*/10****/home/ramesh/check-disk-space全年每10分钟执行一次指定命令check-disk-space。但您可能只需要在办公时间内执行订单,反之亦然。上面的例子展示了如何做这些事情。我们可以使用单个关键字来指定它,而不是在5个字段中指定值,如下所述。在某些特殊情况下,可以使用@后跟关键字来代替以上5个字段,如reboot、midnight、yearly、hourly。8.使用@yearly在每年的第一分钟安排一个工作如果你想在每年的第一分钟执行一个工作,那么你可以使用@yearlycron关键字,如下所示。这将在每年1月1日00:00使用年度维护shell脚本对系统执行年度维护。@yearly/home/ramesh/red-hat/bin/annual-maintenance9。使用@monthly来安排一个cron作业在每个月开始它类似于上面的@yearly。但是使用@monthlycron关键字每月执行命令。这将在每月1日的00:00执行shell脚本磁带备份。@monthly/home/ramesh/suse/bin/tape-backup10。使用@daily每天安排后台作业使用@dailycron关键字,它将使用cleanup-logsshell脚本在每天00:00执行每日日志文件清理。@daily/home/ramesh/arch-linux/bin/cleanup-logs"daystarted"11.如何使用@reboot在每次重启后执行Linux命令?使用@rebootcron关键字,它会在机器每次启动后执行一次指定的命令。@重启CMD12。如何使用MAIL关键字禁用/重定向Crontab邮件输出?默认情况下,crontab将作业输出发送给计划作业的用户。如果要将输出重定向到特定用户,请在crontab中添加或更新MAIL变量,如下所示。ramesh@dev-db$crontab-lMAIL="ramesh"@yearly/home/ramesh/annual-maintenance*/10****/home/ramesh/check-disk-space[注:当前登录用户的crontab使用MAIL变量]如果您不想将邮件发送到任何地方,即停止通过电子邮件发送crontab输出,请在您的crontab中添加或更新MAIL变量,如下所示。邮件=“”13。如何使用Crontab每秒执行一次LinuxCron作业。您不能每秒安排一个cronjob。因为在cron中,你可以指定的最小单位是分钟。在典型情况下,我们大多数人没有理由每秒在系统中运行任何作业。14、在crontab中指定PATH变量在上面所有的例子中,我们都指定了需要执行的Linux命令或shell-script的绝对路径。例如,如果您只想指定tape-backup而不是/home/ramesh/tape-backup,请将路径/home/ramesh添加到crontab中的PATH变量,如下所示。ramesh@dev-db$crontab-lPATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh@yearly年度维护*/10****检查磁盘空间[注:当前登录用户的Crontab带有PATH变量]15.从Cron文件安装Crontab除了直接编辑crontab文件外,您还可以先将所有条目添加到cron文件中。在文件中包含所有这些条目后,您可以将它们上传或安装到cron,如下所示。ramesh@dev-db$crontab-lnocrontabforramesh$catcron-file.txt@yearly/home/ramesh/annual-maintenance*/10****/home/ramesh/check-disk-spaceramesh@dev-db$crontabcron-file.txttramesh@dev-db$crontab-l@yearly/home/ramesh/annual-maintenance*/10****/home/ramesh/check-disk-space注意:这将替换cron-file.txt到您的crontab,这也将删除您的旧cron条目。所以从cron-file.txt上传cron条目时要小心。点击关注,第一时间了解华为云的新鲜技术~
