我需要通过我运行的脚本添加一个cron作业来设置服务器。我目前正在使用Ubuntu。我可以使用crontab -e,但这将打开一个编辑器来编辑当前的crontab。我想通过编程来实现。
可以这样做吗?
我需要通过我运行的脚本添加一个cron作业来设置服务器。我目前正在使用Ubuntu。我可以使用crontab -e,但这将打开一个编辑器来编辑当前的crontab。我想通过编程来实现。
可以这样做吗?
当前回答
它是一种增量添加cron作业的方法:
ssh USER_NAME@$PRODUCT_IP nohup "echo '*/2 * * * * ping -c2 PRODUCT_NAME.com >> /var/www/html/test.html' | crontab -u USER_NAME -"
其他回答
我用python写了一个crontab部署工具:https://github.com/monklof/deploycron
pip install deploycron
安装crontab非常简单,这将把crontab合并到系统现有的crontab中。
from deploycron import deploycron
deploycron(content="* * * * * echo hello > /tmp/hello")
最简单的解决方案是使用echo和>>,然后运行crontab filename 例:
ssh $HOST "echo \"* * * * * echo hello >> /var/spool/cron/crontabs/root\"; sleep 2; crontab /var/spool/cron/crontabs/root"
下面是一个单行程序,它不使用/要求新作业在文件中:
(crontab -l 2>/dev/null; echo "*/5 * * * * /path/to/job -with args") | crontab -
2>/dev/null很重要,这样您就不会得到一些*nixes在当前没有crontab项时产生的no crontab for username消息。
Crontab文件是简单的文本文件,因此可以像对待任何其他文本文件一样对待。使用crontab命令的目的是使crontab文件的编辑更加安全。当通过这个命令进行编辑时,将检查文件是否有错误,只有在没有错误时才保存。
Crontab[文件路径]可用于指定存储在文件中的Crontab。与crontab -e一样,这只会在没有错误的情况下安装文件。
因此,脚本既可以直接编写cron选项卡文件,也可以将它们写入临时文件,并使用crontab[临时文件的路径]命令加载它们。直接写入避免了必须写入临时文件,但也避免了安全检查。
对你的问题更简单的回答是:
echo "0 1 * * * /root/test.sh" | tee -a /var/spool/cron/root
您可以在远程服务器上设置cronjob,如下所示:
#!/bin/bash
servers="srv1 srv2 srv3 srv4 srv5"
for i in $servers
do
echo "0 1 * * * /root/test.sh" | ssh $i " tee -a /var/spool/cron/root"
done
在Linux操作系统中,crontab文件的默认位置是/var/spool/cron/。在这里您可以找到所有用户的crontab文件。您只需要将cronjob条目附加到相应的用户文件中。在上面的例子中,根用户的crontab文件被附加了一个cronjob,用于每天凌晨1点运行/root/test.sh。