Crontab是一个持续运行并触发指定作业/命令的守护进程。crontab文件是一个简单的文件,其中包含有关作业的条目。这些条目包括时间信息和将要执行的命令。Crontab也被简单地称为cron。
Crontab守护程序服务状态
该操作由cron守护进程完成。cron守护进程的状态如下所示。
$ sudo systemctl status cron
![图片[1]-Linux Crontab教程,带有调度作业的示例-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2016/12/poftut_img_584a5cc97a779.png)
停止Cron服务
停止cron和查看cron的状态一样简单。如果停止cron服务,则所描述的cron作业都将不起作用。
$ sudo systemctl stop cron
启动Cron服务
启动与停止类似。为了执行预定的cron作业,我们必须启动cron服务。
$ sudo systemctl start cron
Crontab表格格式
Cron表只是crontab保存有关作业的条目。每行是一个作业。条目为文本格式,易于编辑。我们可以用 -我 参数。
$ crontab -l

下面一行是backup命令将触发的作业。
# m h dom mon dow command 0 0 * * * backup
该行以#is命令开头,下面有一些关于列的说明。
- 米 是分钟
- 小时 是小时
- 多姆 是一个月的哪一天
- 周一 是月份
- 道指 是星期几吗
另一个有用的图表如下。
* * * * * command to be executed- - - - -| | | | || | | | +----- day of week (0 - 6) (Sunday=0)| | | +------- month (1 - 12)| | +--------- day of month (1 - 31)| +----------- hour (0 - 23)+------------- min (0 - 59)
将作业添加到Cron
若要向crontab添加新作业,将对文件进行编辑。
$ crontab -e
我们已经在编辑模式下打开crontab文件,并添加以下行作为作业。我们在所有列上都加了星号,所以 回音“嗨” 将在一个月的每一天、每一个月、每一周的每一天中每一小时的每一分钟运行。我们将在下面看到更多细节。
* * * * * echo "Hi"

退出时,保存文件将激活新添加的作业。
相关文章: 带有at、atq、atrm和批处理示例的Linux调度命令
Crontab时间定义
cron的魔力和细节在于作业的时间安排。下表提供了有关cron计时示例的快捷方式。
- @重新启动 将在启动时启动
- @每年 每年运行一次“0 0 1 1*”
- @每年 同@年
- @每月 每月运行一次“0 0 1**”
- @每周 每周运行一次“0 0**0”
- @每天 每天运行一次“0***”
- @午夜 与@daily相同
- @每小时 每小时运行一次“0***”
Crontab环境
运行作业时,将创建新环境。此环境具有以下环境变量。
限制用户的Cron访问
可以根据用户名限制用户的Cron作业使用。要禁用用户cron新作业,请将用户添加到 /etc/cron.allow
$ echo attacker > /etc/cron.deny
在此示例中,用户攻击者无法向cron添加作业。
删除现有Cron作业
如果我们不需要以前定义的cron作业呢。我们可以通过编辑轻松地删除作业 cron
配置文件。我们将使用 -e
删除所有作业的选项。
$ crontab -e
删除特定用户作业
我们还可以指定一个特定的用户来编辑给定的用户作业。我们将使用 -u
选项,该选项是 user
. 我们还将提供一个用户名。在本例中,我们将编辑用户的cron作业 ismail
.
$ crontab -e -u ismail
列出Crontab中存储的所有作业
因为我们可以很容易地创建cron作业,所以我们可能需要列出它们。我们将使用 -r
选项以列出当前用户配置文件中存储的所有cron作业。
$ crontab -r
列出特定的用户Cron作业
我们还可以指定用户名,以便只列出给定的用户cron作业。我们将使用 -u
和 -r
具有用户名的选项。在本例中,我们将列出用户的cron作业 john
.
$ crontab -r -u john