gpt4 book ai didi

bash - 是否可以使用 bash 脚本截断我现有的 crontab 文件?

转载 作者:行者123 更新时间:2023-12-04 19:05:26 29 4
gpt4 key购买 nike

我在 AWS 上的应用程序部署管道的一部分包括一个更新 hosts CRON 文件的 bash 脚本,此外还以用户身份运行 ruby​​ 安装

sudo -u myuser bash << eof
echo 'running bundle install'
/home/myuser/.rvm/gems/ruby-2.4.1/wrappers/bundle install
echo 'install cron tasks'
(crontab -l 2>/dev/null; echo "TZ=America/Los_Angeles")| crontab -
(crontab -l 2>/dev/null; echo "CRON_TZ=America/Los_Angeles")| crontab -
(crontab -l 2>/dev/null; echo "00 13 * * * /bin/bash /var/www/application/bin/daily-notifications.sh")| crontab -
crontab -l
eof
不幸的是,为了更新我的 AMI 镜像,我需要先手动进入我的 crontab 文件并在拍摄新的操作系统镜像之前先删除 cron 任务,因为上面的代码是将每一行“附加”到现有的末尾文件
是否可以在上面的 bash 脚本中以编程方式清除 cron 任务?

最佳答案

与其删除 crontab 文件,然后运行一个脚本来追加它(注意:整个 crontab -l 2>/dev/null; ... 位是用来追加而不是替换的),为什么不重写脚本直接替换它呢?

sudo -u myuser bash << OuterEOF
echo 'running bundle install'
/home/myuser/.rvm/gems/ruby-2.4.1/wrappers/bundle install
echo 'install cron tasks'
crontab - << InnerEOF
TZ=America/Los_Angeles
CRON_TZ=America/Los_Angeles
00 13 * * * /bin/bash /var/www/application/bin/daily-notifications.sh
InnerEOF
crontab -l
OuterEOF
请注意,此方法涉及此处文档中的此处文档,因此请确保使用不同的分隔符(并且不要缩进它们,否则它们将无法识别)。如果您不喜欢这样,还有许多其他方法可以将多行发送到 crontab -。命令,如 printf :
...
printf '%s\n' \
"TZ=America/Los_Angeles" \
"CRON_TZ=America/Los_Angeles" \
"00 13 * * * /bin/bash /var/www/application/bin/daily-notifications.sh" |
crontab -
...

关于bash - 是否可以使用 bash 脚本截断我现有的 crontab 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71119875/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com