Linux 設定自動排程備份功能 Linux 操作畫面
目录:
Cron是一个调度守护程序,它以指定的时间间隔执行任务。 这些任务称为cron作业,主要用于自动进行系统维护或管理。
例如,您可以将cron作业设置为自动执行重复性任务,例如备份数据库或数据,使用最新的安全补丁更新系统,检查磁盘空间使用情况,发送电子邮件等。 某些应用程序,例如Drupal或Magento,需要cron作业才能执行某些任务。
可以将cron作业安排为按分钟,小时,每月的某天,每月,某周的某天或它们的任意组合运行。
什么是Crontab文件
Crontab(cron表)是一个文本文件,用于指定cron作业的计划。 有两种类型的crontab文件。 系统范围的crontab文件和单个用户crontab文件。
用户crontab文件按用户名存储,其位置因操作系统而异。 在基于Red Hat的系统(例如CentOS)中,crontab文件存储在
/var/spool/cron
目录中,而在Debian和Ubuntu中,文件存储在
/var/spool/cron/crontabs
目录中。
尽管可以手动编辑用户crontab文件,但是建议使用
crontab
命令。
/etc/crontab
和
/etc/cron.d
目录中的文件是系统范围的crontab文件,只能由系统管理员编辑。
在大多数Linux发行版中,您还可以将脚本放在/
/etc/cron.{hourly, daily, weekly, monthly}
hour/day/week/month
/etc/cron.{hourly, daily, weekly, monthly}
目录,并且脚本将
hour/day/week/month
执行一次。
Crontab语法和运算符
用户crontab文件中的每一行均包含六个字段,并用空格分隔,后跟要运行的命令。
* * * * * command(s) - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)
前五个字段可以包含一个或多个用逗号分隔的值或用连字符分隔的值范围。
-
*-星号运算符表示任何值或总是。 如果“小时”字段中带有星号,则表示该任务将每小时执行一次。,--逗号运算符允许您指定要重复的值的列表。 例如,如果您在“小时”字段中有1, 3, 5,则任务将在凌晨1点,凌晨3点和凌晨5点运行。-连字符运算符允许您指定一个值范围。 如果“星期几”字段中有1-5,则任务将在每个工作日(从星期一到星期五)运行。/-斜杠运算符允许您指定将在它们之间的特定间隔内重复的值。 例如,如果您在“小时”字段中具有*/4,则表示该操作将每四个小时执行一次。 与指定0, 4, 8, 12, 16, 20相同。 除了使用斜杠运算符之前的星号,您还可以使用一系列值,1-30/10表示与1, 11, 21相同。
系统范围的Crontab文件
系统级crontab文件的语法与用户crontabs略有不同。 它包含一个附加的必填用户字段,该字段指定哪个用户将运行cron作业。
有几个特殊的Cron时间表宏用于指定公共间隔。 您可以使用此快捷方式代替五列日期规范。 crontab命令允许您安装或打开crontab文件进行编辑。 您可以使用crontab命令通过以下选项查看,添加,删除或修改cron作业: crontab命令使用
cron守护程序会自动设置几个环境变量。 系统管理员可以使用
默认情况下,只有
如果
如果两个文件都不存在,则只有具有管理特权的用户才能使用
以下是一些cron作业示例,这些示例将向您展示如何安排任务在不同时间段运行。 从星期一到星期五,每天的15:00运行命令: 每5分钟运行一个脚本,并将标准输出重定向到
每个星期一下午3点运行两个命令(在命令之间使用运算符
每2分钟运行一次PHP脚本,然后将输出写入文件: 每天每天从上午8点到下午4点运行脚本: 在每个月的第一个星期一上午7点运行脚本 每月1号和15号晚上9:15运行脚本。 设置自定义
您已经了解了如何创建cron作业以及如何在特定的日期和时间安排任务。 如有任何疑问,请随时发表评论。
* * * * * command(s)
* * * * * command(s)
预定义的宏
@yearly
(或
@annually
)-每年1月1日午夜(12:00 am)运行一次指定的任务。 相当于
0 0 1 1 *
。
@monthly
在每月的第一天的每月午夜运行一次指定的任务。 相当于
0 0 1 * *
。
@weekly
每周一次在星期日的午夜运行指定的任务。 相当于
0 0 * * 0
。
@daily
每天午夜运行一次指定的任务。 等效于
0 0 * * *
。
@hourly
在小时开始时每小时运行一次指定的任务。 相当于
0 * * * *
。
@reboot
在系统启动时(启动时)运行指定的任务。Linux Crontab命令
crontab -e
编辑crontab文件,或者创建一个(如果尚不存在的话)。
crontab -l
显示crontab文件的内容。
crontab -r
删除当前的crontab文件。
crontab -i
在删除之前,通过提示删除当前的crontab文件。
crontab -u
VISUAL
或
EDITOR
环境变量指定的编辑器打开crontab文件。
Crontab变量
PATH=/usr/bin:/bin
。 如果cron指定的路径中存在要调用的命令,则可以使用命令的绝对路径,也可以更改cron
$PATH
变量。 您不能像使用常规脚本那样隐式地附加
:$PATH
默认shell设置为
/bin/sh
。 您可以通过更改
SHELL
变量来设置其他
SHELL
从用户的主目录调用该命令。 可以通过crontab中的设置覆盖
HOME
变量。电子邮件通知将发送给crontab的所有者。 要覆盖默认行为,可以将
MAILTO
环境变量与要接收电子邮件通知的所有电子邮件地址一起使用列表(以逗号分隔)。 如果定义了
MAILTO
但为空(
MAILTO=""
),则不会发送邮件。Crontab限制
/etc/cron.deny
和
/etc/cron.allow
文件来控制哪些用户可以访问
crontab
命令。 这些文件由用户名列表组成,每行一个用户名。
/etc/cron.deny
文件存在且为空,这意味着所有用户都可以使用crontab命令。 如果要拒绝特定用户对crontab命令的访问,请将用户名添加到该文件中。
/etc/cron.allow
文件存在,则仅此文件中列出的用户可以使用
crontab
命令。
crontab
命令。Cron Jobs示例
0 15 * * 1-5 command
dev null
,仅将标准错误发送到指定的电子邮件地址:
[email protected] */5 * * * * /path/to/script.sh > /dev/null
&&
):
0 15 * * Mon command1 && command2
*/2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log
00 08-16 * * * /path/to/script.sh
0 7 1-7 * 1 /path/to/script.sh
15 9 1, 15 * * /path/to/script.sh
HOME
,
PATH
,
SHELL
和
MAILTO
变量,并每分钟运行一条命令。
HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command
结论







