使用crontab在Bash中创建子外壳

问题描述

我目前正在某个学校项目上,我们应该处理cron作业,基本上,我们正在构建一个简单的CLI以使用Bash进行CRUD操作。

我发现此代码片段将新作业插入到我的crontab中,但是我不知道它是如何工作的...我知道它使用了subshel​​l和管道,但是我只是不知道为什么我必须这样做它

    read job
    { crontab -l; echo "$job"; } | crontab -

解决方法

crontab是一个文件,其中包含cron守护程序(Unix操作系统的基于时间的作业调度程序)的作业(指令)。

如果您将bash行放入脚本中,则可以说cron_test.sh

#!/usr/bin/sh

read job
    { crontab -l; echo "$job"; } | crontab -

然后,如果您执行脚本./cron_test.sh,您将看到脚本从输入的stdin(将其存储到名为job的变量)中等待,以便为您的用户创建新的作业。

要小心,因为您必须遵守作业语法:

1 2 3 4 5 /path/to/command arg1 arg2

其中:

1: Minute (0-59)
2: Hours (0-23)
3: Day (0-31)
4: Month (0-12 [12 == December])
5: Day of the week(0-7 [7 or 0 == sunday])
/path/to/command – Script or command name to schedule

一些命令:

crontab -l-列出当前crontab(针对您正在使用的用户)

crontab -e-编辑crontab文件