Linux — Как мне выполнить несколько файлов PHP в одной строке оболочки?

У меня есть несколько файлов PHP. Каждый из них запускает прослушиватель сокета или запускает бесконечный цикл. Сценарии останавливаются, когда выполняются через php команда:

php sock_listener.php ...halt there
php listener2.php ... halt there
...

В настоящее время я использую screen Команда, чтобы запустить все файлы PHP слушателя каждый раз, когда машина перезагружается. Есть ли способ, которым я могу запустить все файлы PHP слушателя в одной строке оболочки, чтобы я мог написать сценарий оболочки, чтобы сделать его проще в использовании?

0

Решение

Создайте отдельный сеанс экрана для первого сценария:

session='php-test'
screen -S "$session" -d -m -t A php a.php

где -d -m комбинация приводит к тому, что экран создает отдельный сеанс.

Запустите остальные сценарии в одном сеансе в разных окнах:

screen -S "$session" -X screen -t B php b.php
screen -S "$session" -X screen -t C php c.php

где

  • -X отправляет встроенный screen команда на текущую сессию;
  • -t устанавливает заголовок окна

Сессия будет доступна в выводе screen -ls команда:

There is a screen on:
8951.php-test (Detached)

Подключитесь к сеансу, используя -r вариант, например:

screen -r 8951.php-test

Перечислите окна в сеансе экрана с помощью Ctrl " ярлык или windowlist -b команда.

Менее удобный способ — отправить команды в фоновый режим, добавив амперсанд в конце каждой команды:

nohup php a.php 2>a.php.err >a.php.out &
nohup php b.php 2>b.php.err >b.php.out &
nohup php c.php 2>c.php.err >c.php.out &

где

  • nohup предотвращает завершение команд, если пользователь выходит из оболочки. Читать этот урок для дополнительной информации;
  • 2>a.php.err перенаправляет стандартную ошибку на a.php.err файл;
  • >a.php.out перенаправляет стандартный вывод на a.php.out файл.

Есть ли способ, которым я могу запустить все файлы PHP слушателя в одной строке оболочки, чтобы я мог написать сценарий оболочки, чтобы сделать его проще в использовании?

Вы можете поместить вышеупомянутые команды в файл сценария оболочки, например:

#!/bin/bash -
# Put the commands here

сделать его исполняемым:

chmod +x /path/to/script

и звоните, когда вам это нужно:

/path/to/script

Изменить притон по мере необходимости.

1

Другие решения

Просто запустите их под цирк. Цирк позволит вам определить количество процессов и количество экземпляров, которые вы хотите запустить, и просто оставить их запущенными.
https://circus.readthedocs.io/en/latest/

0

По вопросам рекламы [email protected]