20

commands我知道我可以使用数组将命令放入 .ebextensions/*.config 的源代码中。然而,这些是在每次部署时执行的。如果我想在启动新实例时只执行一次配置命令怎么办?

4

2 回答 2

39

可以使用test:修饰符有条件地运行命令。您指定要完成的测试。如果测试返回 0,则运行命令,否则不运行。

如果您的配置文件中的最后一个命令涉及一个文件,并且您只想运行一次的上述命令检查该文件是否存在,那么这些命令将只运行第一次。

commands:
  01-do-always:
    command: run_my_script
  02-do-on-boot:
    command: script_to_run_once
    test: test ! -f .semaphore
  99-signal-startup-complete:
    command: touch .semaphore

在 Windows 上会是这样的

commands:
  01-do-always:
    command: run_my_script
  02-do-on-boot:
    command: script_to_run_once
    test: if exists c:\\path\\to\\semaphore.txt (exit 0) else (exit 1)
  99-signal-startup-complete:
    command: date > c:\\path\\to\\semaphore.txt
于 2013-05-30T21:48:37.527 回答
0

在 Windows 上,这应该可以工作:

commands:
  01-do-always:
    command: run_my_script
  02-do-on-boot:
    command: script_to_run_once
    test: cmd /c "if exist c:\\semaphore.txt (exit 1) else (exit 0)"
  99-signal-startup-complete:
    command: echo %date% %time% > c:\\semaphore.txt

请注意,我必须test从 Jim Flanagan 的回答中更改命令。

于 2018-06-08T10:51:21.063 回答