【问题标题】:Run Script after pause EC2暂停 EC2 后运行脚本
【发布时间】:2020-08-26 18:21:09
【问题描述】:

每次从我的 EC2 启动后,我都需要运行一个 (bash) 脚本。 机器每天停止 90% - 唤醒后 - 应该运行一个脚本。

我尝试将其推送到 USER-DATA 中 - 但这仅在 init 上运行。 在此之后我在这里跟进:https://aws.amazon.com/de/premiumsupport/knowledge-center/execute-user-data-ec2/ 但这也不起作用 - 因为停止机器并启动机器似乎不需要重新启动

我还在 rc.local 中实现了一个简单的输出,但也没有任何反应。 有办法吗? 所以我们谈谈从这个 Instance-State 切换

到这里:

【问题讨论】:

  • "停止机器并启动机器似乎不需要重新启动" - 这不是我的经验

标签: linux amazon-web-services amazon-ec2


【解决方案1】:

Cloud-Init(在首次启动时运行用户数据脚本)也可以运行脚本:

  • 每次开机
  • 仅在下次启动时

所以,只需在此目录中安装您的脚本:

/var/lib/cloud/scripts/per-boot/

每次启动(启动)实例时,脚本都会运行。这是在实例上触发批处理的好方法。

另请参阅:Auto-Stop EC2 instances when they finish a task - DEV Community

【讨论】:

    【解决方案2】:

    你可以使用 systemd 的 oneshot 功能

    为 mystart.sh 和 mystop.sh 编写脚本,chmod/chown

    /etc/systemd/system/mystart.service。请注意,我们必须指定 RemainAfterExit=true 以便 systemd 在设置操作成功完成后认为该服务处于活动状态。

    [Unit]
    Description=mystart
    After=network.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/bin/mystart.sh
    RemainAfterExit=true
    ExecStop=/usr/local/bin/mystop.sh
    StandardOutput=journal
    
    [Install]
    WantedBy=multi-user.target
    

    重新加载systemd(systemctl reload)并尝试停止并开始测试它

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多