我已经很久没有深入讨论这个话题了。
前段时间,我习惯使用 crontab 每隔一段时间执行一项任务。我需要每 30 分钟执行一次 shell 脚本:
#!/bin/bash
SNAPSHOT=`date +%Y%m%d-%H%M%S`
docker exec es curl -XPUT "localhost:9200/_snapshot/my_backup/$SNAPSHOT?wait_for_completion=true"
我面临两种方法:
- 创建 systemctl 服务,
- 创建一个 crontab。
实现该目标的最佳方法是什么?
答案1
在您的评论中,您写道您添加了如下 cron 作业:
0,30 * * * * root docker exec es sh /usr/local/bin/snapshot.sh
从你的脚本来看,它将是:
0,30 * * * * root /usr/local/bin/snapshot.sh
这样,您的脚本将以root
权限执行。/var/log/cron
您将获得:Jan 20 05:30:01 platform-prod CROND[16409]: (root) CMD (root /usr/local/bin/snapshot.sh)