Ada*_*tan 45 scripts cron automation
有没有办法通过脚本向用户的 cron 添加行?
我通常使用crontab -e,但我想使用 shell 脚本自动执行此任务。
Ric*_*way 59
您可以像这样在当前用户 crontab 的底部回显该行:
#!/bin/bash
line="* * * * * /path/to/command"
(crontab -u $(whoami) -l; echo "$line" ) | crontab -u $(whoami) -
Run Code Online (Sandbox Code Playgroud)
如果要编辑 crontab 中的值,可以执行以下操作:
$ crontab -l | sed -e 's/foo/bar/' | crontab -
Run Code Online (Sandbox Code Playgroud)
显然你需要小心你的替换,以确保它只匹配你想要改变的行;否则全部foos更改为bars(在本例中)。
这种方法的优点是您不会替换整个 crontab。(比喻镊子而不是大锤。)
您可以使用任何编辑命令代替sed。例如,如果你想用ed 修饰一行,看起来像这样:
2 * * * * /sbin/flitch --days 3,4 > /var/log/flitch.out 2>&1
Run Code Online (Sandbox Code Playgroud)
假设这一行是在许多行中,或者您有许多不同的 crontab 要在不同的系统上更新,而您只知道您的行将是唯一包含该术语的行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
...
Run Code Online (Sandbox Code Playgroud)
现在我必须承认,几乎 100% 的时间sed都会做ed会做的事情,但是在瑞士军刀上多加一个工具总是好的。^.^