介绍
Linux中有一个叫做cron的守护进程,用于定期运行进程。
这样做的方式是检查系统上的某些文件夹以便脚本运行。 例如,有一个名为/etc/cron.hourly的文件夹,/ etc / cron.daily,/etc/cron.weekly和/etc/cron.monthly。 还有一个名为/ etc / crontab的文件。
默认情况下,您可以简单地将脚本放入相关文件夹中以使其定期运行。
例如,打开一个终端窗口(通过按CTRL,ALT和T)并运行以下ls命令 :
ls / etc / cron *
您会看到每小时,每天,每周和每月运行的程序或脚本列表。
这些文件夹的麻烦在于它们有点模糊。 例如,日常意味着脚本每天运行一次,但您无法控制该脚本在当天运行的时间。
这就是crontab文件进入的地方。
通过编辑crontab文件,您可以获得脚本或程序在您想要运行的确切日期和时间运行。 例如,也许你想在每天晚上6点备份你的文件。
权限
crontab命令要求用户有权编辑crontab文件。 基本上有两个文件用于管理crontab权限:
- /etc/cron.allow
- /etc/cron.deny
如果文件/etc/cron.allow存在,那么想要编辑crontab文件的用户必须在该文件中。 如果cron.allow文件不存在但存在/etc/cron.deny文件,则该用户不得存在于该文件中。
如果两个文件都存在,那么/etc/cron.allow将覆盖/etc/cron.deny文件。
如果两个文件都不存在,那么它取决于系统配置,用户是否可以编辑crontab。
root用户可以随时编辑crontab文件。 您可以使用su命令切换到root用户或使用sudo命令运行crontab命令。
编辑Crontab文件
每个有权限的用户都可以创建自己的crontab文件。 cron命令基本上查找多个crontab文件的存在,并通过它们全部运行。
要检查您是否有crontab文件,请运行以下命令:
crontab -l
如果您没有crontab文件,则会显示消息“没有
要创建或编辑crontab文件,请运行以下命令:
crontab -e
默认情况下,如果没有选择默认编辑器,则会要求您选择要使用的默认编辑器。 就我个人而言,我喜欢使用nano,因为它非常简单易用,并且可以从终端运行。
打开的文件有很多信息,但关键部分是评论部分结束之前的示例(注释用#开头的行表示)。
#mh dom mon dow命令
0 5 * * 1 tar -zcf /var/backups/home.tgz / home /
有6条信息适合crontab文件的每一行:
- 命令要运行的那一分钟(m)
- 命令运行的一小时(h)
- 命令运行的月份(dom)
- 命令运行的月份(星期一)
- 星期几,命令运行(dow)
- 命令
对于每个项目(命令除外),您可以指定通配符。 看看下面的示例crontab行:
30 18 * * * tar -zcf /var/backups/home.tgz / home /
上述命令的意思是在30分钟,18小时以及每周的任何一天,每月和每天运行一个命令,将主目录压缩到/ var / backups文件夹。
为了让命令在每隔30分钟运行一次,我可以运行以下命令:
30 * * * *命令
为了得到命令,每分钟运行一次,我可以运行以下命令:
* 18 * * *命令
因此,您必须小心设置您的crontab命令。
例如:
* * * 1 *命令
上述命令将在1月份每周的每一天的每一小时的每一分钟运行一次。 我怀疑这是你想要的。
要在1月1日凌晨5点运行一个命令,你需要在crontab文件中使用以下命令:
0 5 1 1 *命令
如何删除Crontab文件
大多数情况下,您不想删除crontab文件,但可能需要从crontab文件中删除一些行。
但是,如果要删除用户的crontab文件,请运行以下命令:
crontab -r
更安全的方法是运行以下命令:
crontab -i
这问了一个问题:“你确定吗?” 在删除crontab文件之前。