Назад | Перейти на главную страницу

Управление заданиями / фоновый процесс (с использованием амперсанда) в командах конфигурации .ebextensions

Возьмем, например, следующий файл .config в .ebextensions /

container_commands: 
  000_run_queue_daemon: 
    command: "nohup php artisan queue:work --daemon &"
    test: "ps -ef | grep artisan | grep -v grep > /dev/null || echo 1"

Если демон еще не запущен, запустите обработчик очереди. Демон обработчика очереди работает вечно (по замыслу) и поэтому должен запускаться как фоновый процесс.

Амперсанд, похоже, не действует, и хвостовой журнал cfn-init.log просто останавливается на

2014-09-15 00:24:53,921 [DEBUG] Running test for command 000_run_queue_daemon
2014-09-15 00:24:53,929 [DEBUG] Test command output: 1

2014-09-15 00:24:53,929 [DEBUG] Test for command 000_run_queue_daemon passed

Затем это остается таковым до тех пор, пока процесс EB не завершится по тайм-ауту и ​​не прекратит развертывание.

Как я могу запустить этот процесс в фоновом режиме?

Чтобы выполнить эту работу, мне пришлось запустить команду из файла с помощью хуков после развертывания

commands:
  create_post_dir:
    command: "mkdir /opt/elasticbeanstalk/hooks/appdeploy/post"
    ignoreErrors: true

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_workers.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      nohup php /var/app/current/artisan queue:work --daemon >/dev/null 2>&1 &