gpt4 book ai didi

bash - 我们可以通过 AWS SSM 将命令作为后台进程运行吗?

转载 作者:行者123 更新时间:2023-12-04 15:18:07 30 4
gpt4 key购买 nike

我正在尝试同步一个 S3 存储桶,这需要将近 3 个小时才能完全同步。

同步桶.sh:

nohup aws s3 sync "$source_bucket/$folder/" "s3://$destination_bucket/" \
--profile abc --acl bucket-owner-full-control --sse "aws:kms" \
--sse-kms-key-id "$KEY_ARN" > /var/log/$folder.log 2>&1 &

echo "Successfully triggered the sync job"

我希望使用如下所示的 AWS SSM 发送命令触发同步作业:

触发器.sh:

COMMAND=$(aws ssm send-command --document-name "AWS-RunShellScript" \
--targets "Key=instanceids,Values=${RECOVERY}" \
--parameters '{"executionTimeout":["10800"],"commands":["/opt/scripts/sync-bucket.sh"]}' \
--output-s3-bucket-name "some-bucket" \
--timeout-seconds 10800 \
| jq -r '.Command.CommandId')

我的观察是 SSM 在将执行标记为“成功”之前等待此后台作业完成。有没有一种方法可以触发后台作业并让 SSM 完成执行,而无需等待后台作业完成?

或者有更好的方法吗?我基本上是在尝试使这里的过程自动化,并且很高兴让作业按需在后台运行,而无需登录到实例并手动运行命令。

感谢您的宝贵时间。

最佳答案

问题不在于 SSM 正在等待您的后台命令完成,而是您的命令实际上并未放入后台,因为您的 nohup命令等待输入。要修复,请替换 nohup whatever_your_command_is &通过 nohup whatever_your_command_is < /dev/null 2> /dev/null > /dev/null &

关于bash - 我们可以通过 AWS SSM 将命令作为后台进程运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63950435/

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