我知道我可以使用commands
数组在.ebextensions / * .config中将命令放在我的源代码中。然而,这些是在每个部署上执行的。如果我想在启动新实例时只执行一次配置命令呢?
答案 0 :(得分:37)
可以使用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
答案 1 :(得分: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
请注意,我必须从Jim Flanagan的回答中更改test
命令。