假设我正在创建两个 crontab 文件。
/tmp/my-crontab
/root/my-alternate-crontab
每个 crontab 文件都被安排运行不同的脚本。
当我启动 cronjob 时,第一个将被旧的替换。
crontab -u smarak /tmp/my-crontab
crontab -u smarak /root/my-alternate-crontab
以上对于单个用户来说可能吗?
答案1
解决单个 crontab 问题的两种方法。
将您的 crontab 条目放入某个目录中的文件中,例如~/crontab.d/thisandthat.cron
,然后使用以下命令将这些更改提交到系统 crontab:
cat ~/crontab.d/*.cron | crontab -
该扩展.cron
是为了避免意外包含编辑器中的备份文件。请注意,由于所有文件都连接在一起,因此文件中设置的任何变量也将应用于后面的文件。
您还可以执行类似于/etc/cron.hourly
Debian 中实现和朋友的操作。主要/etc/crontab
包含这样的规则:
17 * * * * root cd / && run-parts --report /etc/cron.hourly
您可以安排一个 crontab 条目来运行多个程序。 Debian 的run-parts dir
类似,for f in dir/* ; do "$f" ; done
只是它会跳过奇怪的文件名,再次避免运行由编辑器等创建的备份文件。
答案2
不。每个用户都有一个 crontab。为什么?因为 crontab 是与单个用户关联的所有 cron 作业的“表”(“选项卡”)。
如果您想使用 运行多个任务cron
,只需在 crontab 中添加多行即可。
如果您有多个包含 cron 作业规范的文件,只需将它们连接起来即可:
cat crontab1 crontab2 crontab3 >my-crontab
crontab my-crontab
答案3
您可以只阅读实际条目并在后面添加新条目。
一旦你运行了这个:
crontab -u smarak /tmp/my-crontab
理想情况下你可以这样做:
crontab -u smarak <(cat /root/my-alternate-crontab) <(crontab -l)
但 crontab 似乎不接受上面的形式,所以这里有解决方法:
cat /root/my-alternate-crontab <(crontab -l)| crontab -u smarak -
这对我有用。希望有帮助。