有没有一种方法可以通过脚本向用户的cron添加行?
我通常使用crontab -e
来执行此操作,但是我想使用shell脚本自动执行此任务。
stackoverflow.com/questions/878600/...
—
西罗桑蒂利新疆改造中心法轮功六四事件
有没有一种方法可以通过脚本向用户的cron添加行?
我通常使用crontab -e
来执行此操作,但是我想使用shell脚本自动执行此任务。
Answers:
您可以像这样将行回显到当前用户crontab的底部:
#!/bin/bash
line="* * * * * /path/to/command"
(crontab -u userhere -l; echo "$line" ) | crontab -u userhere -
cron
已更改。
crontab
该用户还不存在,也会出错(?)
如果要在crontab中编辑值,可以执行以下操作:
$ crontab -l | sed -e 's/foo/bar/' | crontab -
显然,您需要谨慎进行替换,以确保它仅与要更改的行匹配;否则将全部foos
更改为bars
(在此示例中)。
这种方法的优点是您不必替换整个crontab。(比喻用镊子而不是大锤。)
您可以使用任何编辑命令来代替sed。例如,如果您想使用ed修饰看起来像这样的一行:
2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1
说这行是很多行中的一员,或者您有许多不同的crontabs在不同的系统上进行更新,并且您只知道您的行将是其中唯一包含该术语的行flitch
。
它可能看起来像:
$ cat /tmp/edscript
/flitch
s/3/9/
w
q
$ crontab -l > /tmp/out && ed /tmp/out < /tmp/edscript && crontab - < /tmp/out
$ crontab -l
...
2 * * 1 * /sbin/flitch --days 9,4 > /var/log/flitch.out 2>&1
...
现在,我必须承认,sed几乎有100%的时间会完成ed会做的事情,但是在瑞士军刀上使用额外的工具总是很好。^。^