Linux crontab 命令实用示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何使用 crontab 命令在 Linux 中调度重复任务。crontab 命令允许你创建、编辑和管理 cron 任务,这些任务是在指定时间间隔自动运行的脚本或命令。你将首先了解 crontab 命令以及如何检查当前的 cron 任务。然后,你将创建一个简单的脚本,并使用 crontab 将其调度为每分钟运行一次。最后,你将学习如何使用 crontab 调度一个重复的备份任务。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/rm("File Removing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/SystemInformationandMonitoringGroup -.-> linux/crontab("Job Scheduling") linux/VersionControlandTextEditorsGroup -.-> linux/vim("Text Editing") subgraph Lab Skills linux/echo -.-> lab-422619{{"Linux crontab 命令实用示例"}} linux/rm -.-> lab-422619{{"Linux crontab 命令实用示例"}} linux/cat -.-> lab-422619{{"Linux crontab 命令实用示例"}} linux/chmod -.-> lab-422619{{"Linux crontab 命令实用示例"}} linux/crontab -.-> lab-422619{{"Linux crontab 命令实用示例"}} linux/vim -.-> lab-422619{{"Linux crontab 命令实用示例"}} end

Crontab 简介

在这一步中,你将学习如何使用 crontab 命令在 Linux 中调度重复任务。crontab 命令允许你创建、编辑和管理 cron 任务,这些任务是在指定时间间隔自动运行的脚本或命令。

首先,让我们检查 labex 用户的当前 crontab 条目:

crontab -l

示例输出:

No crontab for labex.

如你所见,当前 labex 用户没有调度任何 cron 任务。

接下来,让我们创建一个新的 cron 任务,每分钟运行一个简单的脚本。在 ~/project 目录下创建一个名为 hello.sh 的新文件,内容如下:

#!/bin/bash
echo "Hello from cron job!"

使脚本可执行:

chmod +x ~/project/hello.sh

现在,让我们添加一个新的 cron 任务,每分钟运行这个脚本:

crontab -e

这将打开 crontab 编辑器。在文件末尾添加以下行:

* * * * * /home/labex/project/hello.sh

这个 cron 任务将每分钟运行 hello.sh 脚本。

保存并退出 crontab 编辑器。

为了验证 cron 任务是否正在运行,等待一分钟并检查系统日志:

tail -n 5 /var/log/syslog

你应该会在日志中看到 "Hello from cron job!" 的消息。

使用 Crontab 调度重复任务

在这一步中,你将学习如何使用 crontab 命令调度重复任务。

首先,让我们在 ~/project 目录下创建一个名为 backup.sh 的新脚本,用于执行简单的备份操作:

#!/bin/bash
echo "Backing up data to backup.txt"
date >> ~/project/backup.txt

使脚本可执行:

chmod +x ~/project/backup.sh

现在,让我们使用 crontab 调度这个脚本每 5 分钟运行一次:

crontab -e

在 crontab 编辑器中添加以下行:

*/5 * * * * /home/labex/project/backup.sh

这个 cron 任务将每 5 分钟运行一次 backup.sh 脚本。

保存并退出 crontab 编辑器。

为了验证 cron 任务是否正在运行,等待 5 分钟并检查 backup.txt 文件:

cat ~/project/backup.txt

你应该会看到每 5 分钟将当前日期和时间添加到文件中。

管理 Crontab 条目

在这一步中,你将学习如何管理你的 crontab 条目,包括列出、编辑和删除 cron 任务。

首先,让我们列出 labex 用户的所有当前 crontab 条目:

crontab -l

你应该会看到你在前几步中创建的两个 cron 任务:

* * * * * /home/labex/project/hello.sh
*/5 * * * * /home/labex/project/backup.sh

要编辑 crontab,请使用以下命令:

crontab -e

这将打开 crontab 编辑器,你可以在其中添加、修改或删除 cron 任务条目。

让我们尝试删除 hello.sh 的 cron 任务。在 crontab 编辑器中,找到 * * * * * /home/labex/project/hello.sh 这一行并删除它。保存并退出编辑器。

为了验证 hello.sh 的 cron 任务是否已被删除,再次运行以下命令:

crontab -l

你应该只会看到 backup.sh 的 cron 任务保留下来。

现在,让我们通过在行首添加 # 来禁用 backup.sh 的 cron 任务:

crontab -e

*/5 * * * * /home/labex/project/backup.sh 这一行的开头添加一个 #。保存并退出编辑器。

为了验证 backup.sh 的 cron 任务是否已被禁用,运行以下命令:

crontab -l

你应该会看到 backup.sh 的行开头有一个 #,表示它现在已被禁用。

总结

在本实验中,你学习了如何使用 crontab 命令在 Linux 中调度重复任务。你首先检查了 labex 用户的当前 crontab 条目,发现没有调度任何 cron 任务。接着,你创建了一个名为 hello.sh 的简单脚本,并添加了一个新的 cron 任务,使其每分钟运行一次。为了验证 cron 任务是否正在运行,你检查了系统日志并看到了 "Hello from cron job!" 的消息。然后,你创建了一个名为 backup.sh 的新脚本,用于执行简单的备份操作,并使用 crontab 将其调度为每 5 分钟运行一次。

Linux 命令速查表