尝试在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。
这次我参考了下面的文章。
非常感谢你。
准备执行的任务
这次是为了试验而准备的,我根据之前介绍的文章准备了文件。
首先是可执行文件。

我准备了一个与文章中相同的test.sh文件。
如果尝试运行sh test.sh,会返回hello的字样。
此外,还可以通过ls命令确认已创建了log的文本文件。

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

执行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。
コ运行曼陀罗时,出现了以下信息。

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

参考文章进行描述。
从左至右:分钟、小时、日、月和星期(0-6,0 为星期日)。
这一次都是运行每分钟、每小时、每天、每月和每周的某一天*
。
(在上述文章中,会议记录被设置为 */1,但使用 * 也可以顺利进行。)

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

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

結果
使用 crontab 的定期处理已成功执行。
学び
可以比预想的更轻松地进行定期处理。
总结
今后,我们希望能够定期执行更复杂的流程。