我需要通过我运行的脚本添加一个cron作业来设置服务器。我目前正在使用Ubuntu。我可以使用crontab -e,但这将打开一个编辑器来编辑当前的crontab。我想通过编程来实现。
可以这样做吗?
我需要通过我运行的脚本添加一个cron作业来设置服务器。我目前正在使用Ubuntu。我可以使用crontab -e,但这将打开一个编辑器来编辑当前的crontab。我想通过编程来实现。
可以这样做吗?
当前回答
在Ubuntu和许多其他发行版中,你可以把一个文件放到/etc/cron.D目录,其中包含包含有效crontab条目的单行。不需要向现有文件添加行。
如果你只是需要每天运行一些东西,就把一个文件放在/etc/cron.daily中。同样,您也可以将文件放入/etc/cron.每小时,/etc/cron./etc/cron.weekly。
其他回答
最简单的解决方案是使用echo和>>,然后运行crontab filename 例:
ssh $HOST "echo \"* * * * * echo hello >> /var/spool/cron/crontabs/root\"; sleep 2; crontab /var/spool/cron/crontabs/root"
/etc/crontab只是一个ascii文件,所以最简单的就是
echo "*/15 * * * * root date" >> /etc/crontab
这会增加一份每15分钟给你发邮件的工作。根据您的喜好进行调整,并通过grep或其他方法测试是否已经添加了该行以使脚本具有幂等性。
在Ubuntu等平台上,你也可以将文件放到/etc/cron.*这更容易做和测试——另外,你不会弄乱(系统)配置文件,如/etc/crontab。
它是一种增量添加cron作业的方法:
ssh USER_NAME@$PRODUCT_IP nohup "echo '*/2 * * * * ping -c2 PRODUCT_NAME.com >> /var/www/html/test.html' | crontab -u USER_NAME -"
Crontab文件是简单的文本文件,因此可以像对待任何其他文本文件一样对待。使用crontab命令的目的是使crontab文件的编辑更加安全。当通过这个命令进行编辑时,将检查文件是否有错误,只有在没有错误时才保存。
Crontab[文件路径]可用于指定存储在文件中的Crontab。与crontab -e一样,这只会在没有错误的情况下安装文件。
因此,脚本既可以直接编写cron选项卡文件,也可以将它们写入临时文件,并使用crontab[临时文件的路径]命令加载它们。直接写入避免了必须写入临时文件,但也避免了安全检查。
在Ubuntu和许多其他发行版中,你可以把一个文件放到/etc/cron.D目录,其中包含包含有效crontab条目的单行。不需要向现有文件添加行。
如果你只是需要每天运行一些东西,就把一个文件放在/etc/cron.daily中。同样,您也可以将文件放入/etc/cron.每小时,/etc/cron./etc/cron.weekly。