【问题标题】:Subshells in Bash, using crontabBash 中的子shell,使用 crontab
【发布时间】:2021-02-06 13:07:05
【问题描述】:
我目前正在从事一些学校项目,我们应该处理 cron 作业,基本上,我们正在构建一个简单的 CLI 来使用 Bash 进行 CRUD 操作。
我发现了这个在我的 crontab 中插入新作业的代码 sn-p,但我不知道它是如何工作的……我知道它使用 subshell 和管道,但我只是不知道我为什么会有去做吧
read job
{ crontab -l; echo "$job"; } | crontab -
【问题讨论】:
标签:
linux
bash
cron
cron-task
【解决方案1】:
crontab 是一个文件,其中包含cron 守护进程(Unix 操作系统的基于时间的作业调度程序)的作业(指令)。
如果您将 bash 行放入脚本中,比如说 cron_test.sh
#!/usr/bin/sh
read job
{ crontab -l; echo "$job"; } | crontab -
然后,如果您执行脚本./cron_test.sh,您将看到脚本等待您的输入(将其存储到名为作业的变量中)的标准输入,以便为您的用户创建一个新作业。
要小心,因为你必须尊重作业语法:
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 文件