尝试在Ubuntu上使用cron

简要概述

我在Ubuntu上尝试使用cron执行简单的定期处理任务。

背景 – One option for paraphrasing in Chinese would be “上下文” .

我之前听过”cron”、”crontab”这两个词,但从未尝试过使用它们,所以我决定实际操作一下。

目标

执行简单的定期处理,并确认其是否在日志中输出。

适用读者

    对cron的读者

假设

必须:使用Linux操作系统(本次使用Ubuntu版本)
推荐:具备基本的命令行知识

环境

    • 主机OS:Window10 Home

 

    • WSL:WSL2

 

    Ubuntu:22.04.2 LTS

操作步骤

在进入步骤之前,首先需要补充一下前提条件。

首先,根据维基百科的解释,cron到底是什么呢?如下所述。

 

Crontab(亦称为Cron Tab、Clone Tab、以及Coulong Tab)命令是用于管理Unix系操作系统(OS)中定时执行命令的调度的命令。

换句话说,由于这是一个可以在Unix系列操作系统上使用的命令,所以我们决定在Ubuntu上尝试一下。

如果能够安装Ubuntu,无论是专用机还是虚拟化软件如VirtualBox都没有问题,但本次决定使用WSL(Windows Subsystem for Linux)。关于WSL的详细介绍将在另一篇文章中进行,它是微软官方提供的一种在Windows上运行Linux程序的机制。安装WSL后,默认会安装Ubuntu(应该是的),所以方便易用(无需启动VirtualBox等软件),因此这次选择了WSL。

我对于cron也正在学习中,通过向crontab文件中写入要定期执行的任务和其内容,可以实现指定的任务被执行的功能。接下来,我将尝试使用cron。

这次我参考了下面的文章。
非常感谢你。

 

准备执行的任务

这次是为了试验而准备的,我根据之前介绍的文章准备了文件。
首先是可执行文件。

無題.png

我准备了一个与文章中相同的test.sh文件。
如果尝试运行sh test.sh,会返回hello的字样。

此外,还可以通过ls命令确认已创建了log的文本文件。

無題.png

日志中确实记录了相关内容。

image.png

执行cron任务

那么,我们将运行上述准备好的sh文件。
使用crontab命令进行执行。

关于命令选项,我在Oracle的官网上找到了相关说明,我将摘录如下。

 

请参考上面的URL获取详细信息。

-–e
编辑当前用户 crontab 文件的副本;如果 crontab 不存在,则创建并编辑一个空文件。 编辑完成后,该文件将被安装为用户的 crontab 文件。
使用 -e 选项编辑文件时,环境变量 EDITOR 决定调用哪个编辑器。 不要直接编辑 crontab 文件来添加作业。 因为 cron 无法识别这种方式所做的更改。
删除 crontab 文件中的所有行将恢复旧的 crontab 文件。 删除所有行的正确方法是使用 -r 选项删除 crontab 文件。
如果指定了用户名,则会编辑指定用户的 crontab 文件,而不是当前用户的 crontab 文件。 只有拥有 root 和 solaris.jobs.admin 授权的用户才能执行此操作。
-l
显示调用 crontab 的用户的 crontab 文件内容。 只有 root 或拥有 solaris.jobs.admin 授权的用户才能通过在 -l 选项后指定用户名来查看指定用户的 crontab 文件。
-r
从 crontab 目录中删除用户的 crontab。只有获得 root 或 solaris.jobs.admin 授权的用户才能删除指定用户的 -crontab 文件,方法是在 -r 选项后指定用户名。 只有获得 root 或 solaris.jobs.admin 授权的用户才能删除用户的 -crontab 文件。

</blockquote
因此,本次我们将在 crontab 文件上添加-E 选项,以便定期执行 test.sh。

コ运行曼陀罗时,出现了以下信息。

無題.png

因为简单、选择nano(1.)。

無題.png

参考文章进行描述。
从左至右:分钟、小时、日、月和星期(0-6,0 为星期日)。
这一次都是运行每分钟、每小时、每天、每月和每周的某一天*

(在上述文章中,会议记录被设置为 */1,但使用 * 也可以顺利进行。)

無題.png

我确认每分钟都有正确的更新日志,并且测试脚本test.sh能够无误地执行。

無題.png

我想这是我的特殊情况,但可能与我在 test 工作文件夹下创建 test.sh 有关、
我想这是我的特殊情况,但我在 test 工作文件夹下创建了 test.sh,而 testlog.txt 文件是在 sh 所在的 test 目录上方创建的、
我当时太着急了。
(通过重写 test.sh,可以在与 sh 相同的层级中输出日志,具体如下。)

image.png

結果

使用 crontab 的定期处理已成功执行。

学び

可以比预想的更轻松地进行定期处理。

总结

今后,我们希望能够定期执行更复杂的流程。

广告
将在 10 秒后关闭
bannerAds