问题描述
我目前正在某个学校项目上,我们应该处理cron作业,基本上,我们正在构建一个简单的CLI以使用Bash进行CRUD操作。
我发现此代码片段将新作业插入到我的crontab中,但是我不知道它是如何工作的...我知道它使用了subshell和管道,但是我只是不知道为什么我必须这样做它
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文件