Как перезапустить php в windows
Перезапустите процесс PHP FCGI автоматически после его смерти в Windows при использовании с nginx.
Я использую PHP FCGI для выполнения сценариев PHP (это Restful Web Services, написанные на PHP, который обрабатывает веб-запросы с веб-страниц) с Nginx на Windows. Все работает нормально, пока количество запросов не достигнет «php_fcgi_max_requests». Я устанавливаю это значение 1000, так как каждый учебник по Nginx + PHP FCGI предлагает это значение для стабильности PHP. Но я хочу знать, есть ли способ, если PHP FCGI может быть переработан при использовании с Nginx в ОС Windows. Другими словами, как только 1000 запросов будут обработаны и PHP FCGI умрет, PHP PHPGI перезапустится и снова начнет обрабатывать запросы. Мне нужно, чтобы этот nginx + PHP FCGI всегда работал в Windows до тех пор, пока пользователь не закроет его явно.
Я много исследовал в Интернете, но не смог найти решение для этого для Nginx на Windows. Любая другая операционная система, к сожалению, не вариант. Мне нужно решение только для Windows, и мне нужен легкий сервер, который не занимает много памяти и быстро устанавливается.
Если вы считаете, что моя цель не может быть достигнута с помощью Nginx + PHP FCGI, я открыт для предложений, если PHP FCGI можно использовать с любым другим легким сервером (например, Nginx) в Windows, где он может обрабатывать как можно больше запросов (без ограничений для запросы или, по крайней мере, перезагрузить себя, когда процесс умирает при достижении максимального количества запросов).
Было бы очень полезно, если бы кто-нибудь мог дать мне какое-либо руководство.
К вашему сведению, я запускаю сервер Nginx и PHP FCGI, как показано ниже:
Пожалуйста, дайте мне знать, если кому-то понадобятся какие-либо технические детали.
Заранее большое спасибо.
Решение
Не уверен, если вы все еще застряли с этой проблемой. Обходной путь, который я использовал, заключался в разработке службы Windows, которая отслеживает количество запросов, обработанных Nginx. Я использовал несколько экземпляров PHP-CGI (Fast CGI) для балансировки нагрузки на сервер.
Я не могу поделиться полным кодом, как я сделал это для работы, но я могу предоставить шаги для разработки собственной реализации.
Некоторая справочная информация о том, почему я реализовал это так, как сделал:
Шаг 1
Настройте Nginx для активного мониторинга. Это позволит вам отслеживать количество запросов, которые ваш сервер получает.
Даже если PHP-CGI потерпел крах, все еще можно получить информацию о запросе от Nginx.
Добавьте следующую информацию о местоположении в ваш server<> блок в nginx.conf
Теперь с вашего сервера, если вы посещаете локальный / nginx_status Вы сможете увидеть количество обработанных (3-е число в 3-й строке — количество запросов). Nginx Doc на stub_status
Отсюда вы можете настроить функцию для анализа номера запроса из этой строки.
Шаг 3
Настройте Nginx для балансировки нагрузки нескольких экземпляров PHP-CGI. Для нашей реализации мы использовали три экземпляра. в http<> блок из nginx.conf Добавьте следующий блок.
В вашем server<> блок, найдите location
Шаг 4
Запустите три экземпляра PHP-CGI. Одно прослушивание на каждом из портов: 9000, 9001 и 9002.
Я хотел сделать это из своего сервиса, но у меня были проблемы с прямым вызовом исполняемого файла PHP-CGI. Я написал командный файл, который запускает PHP-CGI. Он принимает номер порта в качестве параметра. Файл был назван start-php.bat
Начал бы прослушивание экземпляра через порт 9000.
Шаг 5
Постройте сервис.
Вот часть, которая зависит от вашей реализации. Я могу предоставить вам общий рабочий процесс / алгоритм.
Настройка среды разработки для PHP веб-разработчика в Windows
Первые два года своей профессиональной деятельности в создании сайтов я работал под Linux. Но при всей гибкости и мощности этой системы она, всё же, неудобна в мелочах. Однажды, эти мелочи перевесили все прочие плюсы и я решился пересесть на Windows. Сейчас я совершенно не жалею о потраченном времени на настройку среды разработки, а моим рабочим ноутбуком, который по совместительству является и домашним, стало гораздо удобнее пользоваться.
Этот пост может сэкономить время тем, кто так же как и я собирается перейти на Windows и тем, кто только ещё начинает работать PHP-программистом или веб-разработчиком. Для полноценной веб-разработки понадобятся: виртуальная среда, система контроля версий, менеджеры зависимостей, система сборки приложений, система развёртки приложений и, конечно, хороший редактор кода. Я не буду рассказывать зачем нужен каждый из компонентов, а лишь дам инструкцию по его установке в Windows. Я использую Vagrant, Composer, NPM, Bower, Git, Gulp, Capistrano и PHPStorm, дальше пойдёт речь именно об этих технологиях. Инструкции даны для Windows 10.
Начнём с установки PHP
Для разработки я использую PHP 7, чтобы мой код был совместим с ним, когда я соберусь переезжать. На боевых серверах у меня пока что PHP 5.6. Для того, чтобы случайно не написать код, который не будет работать в продакшене в моём PHPStorm указан уровень языка 5.6.
Для работы в Windows у PHP есть специальная версия языка, которую можно скачать с сайта PHP. Для того, чтобы установить PHP 7 в операционной системе Windows понадобится программа Visual C++ Redistributable for Visual Studio 2015, которую можно скачать с официального сайта Майкрософта. Установка этой программы не содержит никаких трудностей, нужно просто нажимать кнопку «Далее».
После установки Visual C++ Redistributable скачиваем архив PHP 7 для Windows (VC14 Non Thread Safe x64 или x86 в зависимости от разрядности системы) c официального сайта PHP. В архиве нет инсталлятора, его просто нужно распаковать в папку где-нибудь на диске. В пути к этой папке не должно быть пробелов и русских букв, у меня это C:\php.
После распаковки нужно добавить PHP в системный PATH для того, чтобы можно было запускать PHP из любого каталога:
Система контроля версий
Установить Git на Windows проще простого. В качестве приятного бонуса вместе с Git поставляется консоль Git bash. Работать с этой консолью гораздо удобнее, чем со стандартной CMD в Windows. Кроме того, она понимает некоторые полезные линуксовские команды, такие как find, ls и прочие.
При установке Git под Windows вам нужно будет прописать git.exe в PATH вашей системы, чтобы Git можно было запускать из любого места в командной строке. А также указать Git’у, чтобы при получении кода он не менял символы окончания строк в файлах (эти символы отличаются на системах с Linux и Windows). Всё это делается парой кликов мышкой через инсталятор Git.
Вот скриншоты важных страниц установки Git:
Откройте Git Bush и запустите две команды:
На этом первоначальная настройка Git закончена.
Менеджеры зависимостей NPM, Bower и Composer
Для того, чтобы получить NPM нужно установить NodeJS.
У NodeJS есть официальный установщик для Windows, поэтому установка будет проще простого:
Если команды выдали версии, например: «v6.2.0» и «3.8.8», то это значит, что всё успешно установлено и можно работать.
После установки NPM можно приступить к установке Bower
Здесь всё просто, введите в командной строке:
Composer
У пакетного менеджера Composer есть специальный установщик для Windows. Скачать его можно с официального сайта. Сама установка элементарна и займёт не больше 5 минут, но есть две особенности.
Во первых, перед установкой Composer нужно установить PHP. О том как это сделать написано в начале поста. Во вторых, после установки Composer нужно передать ему специальный GitHub Tokken для того, чтобы обойти ограничени GitHub’а на количество обращений по API.
Но начнём с установки. После скачивания и запуска установщика он попросит указать путь к PHP. Если вы добавили PHP в PATH, как указано у меня в инструкци, то Composer сам определит этоть путь. Если нет, то вам нужно указать этот путь самостоятельно.
После этого нужно ещё несколько раз нажать Next и Composer будет установлен в систему и доступен через командную строку из любого каталога.
В процессе работы с Composer программа в какой-то момент сама предложит вам ввести GitHub Tokken и даст ссылку на его создание. Но можно не ждать этого и сделать всё самому. Создать токен можно на специальной странице GitHub’а. Для того, что передать токен Composer’у нужно ввести в командной строке команду
Всё, на этом Composer установлен и готов к использованию.
Система сборки проекта Gulp
Так как он часть экосистемы NPM, то тут всё просто:
Виртуальная среда Vagrant
Для установки Vagrant в Windows предварительно понадобится установить один из провайдеров виртуальной среды. Я использую VirtualBox от Oracle. Установка обеих программ не составляет абсолютно никакого труда и требует только вовремя нажимать кнопку Next.
Ссылки на страницы откуда можно скачать установщики:
Система развёртывания Capistrano
Для того, чтобы установить Capistrano на Windows в первую очередь нужно установить язык программирования Ruby. В этом нет ничего сложного, для установки языка в Windows существует специальный проект rubyinstaller.org. Нужно лишь скачать установщик и несколько раз нажать кнопку Next. Не забудьте только поставить галочку напротив пункта о добавлении Ruby в PATH Windows.
Это позволит запускать Capistrano из любого каталога, что очень удобно.
После установки Ruby настало время установить Capistrano. Откройте командную строку (если она была открыта, до установки Ruby, то закройте и откройте её снова, чтобы обновить данные из PATH) и введите команду:
Эта команда установит Capistrano в систему и в дальнейшем его можно будет запускать командой:
Как видите, всё элементарно.
Сразу после установки PHPStorm на Windows нужно сделать две важные настройки:
Обе настройки находятся в разделе Editor. Попасть в настройки можно с главного экрана PHPStorm.
На этом всё. На установку всех компонентов понадобится примерно час времени.
Автоматический перезапуск PHP скрипта при выходе
есть ли способ, которым я могу автоматически перезапустить PHP-скрипт всякий раз, когда он выходит, независимо от того, был ли он правильно завершен или завершен из-за ошибки или максимального использования памяти и т. д.?
7 ответов
PHP-скрипт также может перезапустить себя с помощью PCNTL.
отказ от ответственности: смысл этого упражнения только в том, чтобы доказать, что PHP вполне способен перезапустить себя и ответить на вопрос:
есть ли способ, которым я могу автоматически перезапустить PHP-скрипт всякий раз, когда он выходит, независимо от того, был ли он правильно завершен или завершен из-за ошибки?
поэтому мы не можем вдаваться в подробности о unix процессы, поэтому я бы предложил вам начать с книги PCNTL или обратитесь к php-pcntl для получения более подробной информации.
в примерах мы предположим, что это скрипт php CLI, запущенный в среде *nix из терминала с полу-приличной оболочкой с помощью команды:
мы передаем атрибут restart count как индикатор того, что процесс был перезапущен.
могу ли я автоматически перезапустить PHP-скрипт?
Да Я может!
независимо от того, является ли он надлежащим образом?
Да, я могу перезапустить, если прекращается!
или прекращено из-за ошибки?
Дитто!
но ты же знаешь, что я хочу большего, верно?
конечно! Я могу перезапустить kill, hub даже Ctrl-C!
как я могу расторгнуть теперь его?
если вы затопить процесс, удерживая вниз Ctrl-C вы можете просто поймать его где-то в завершении работы.
Я не хочу видеть все эти ошибки, могу ли я перезапустить их тоже?
нет проблем, я тоже могу обрабатывать ошибки!
хотя на первый взгляд это работает нормально, потому что pcntl_exec работает в том же процессе, мы не замечаем, что все ужасно неправильно. Если вы хотите породить новый процесс и позволить старому умереть вместо этого, что является вполне жизнеспособным альтернатива см. следующий пост, вы заметите, что 2 процесса запускаются на каждой итерации, потому что мы запускаем уведомление PHP и ошибку из-за общего надзора. Что, конечно, можно легко исправить, гарантируя, что мы умираем () или выходим () после вызова pcntl_exec в обработчике ошибок, иначе PHP предполагает, что допуск был принят и продолжается.
Я пытаюсь сказать, что даже если вы можете перезапустить сценарий, который не удался, это не повод разрешать сломанный код. Хотя для этой практики могут существовать жизнеспособные варианты использования,я категорически не согласен с тем, что перезапуск при сбое должен использоваться как решение для сценариев, терпящих неудачу из-за ошибок! как мы можем видеть из этих примеров, нет способа точно знать, где он потерпел неудачу, поэтому мы не можем быть уверены, где он начнется снова. Переход к решению» быстрого исправления», которое может показаться прекрасным, может иметь больше проблем сейчас, чем раньше.
Я бы предпочел чтобы увидеть дефект, устраненный с помощью некоторых правильных модульных тестов, которые помогут смыть виновника, чтобы мы могли исправить проблему. Если PHP исчерпает память, этого можно избежать путем консервативного использования ресурсов путем сброса переменных после использования. (кстати. вы обнаружите, что присвоение null намного быстрее, чем использование unset для того же результата) я боюсь, хотя, если оставить нерешенным, перезапуск определенно послужит подходящим открывателем для банки червей, которые у вас уже есть.
здесь будут драконы.
расширенное использование, а не для слабонервных.
для запуска отдельного процесса измените функцию restartMyself на:
это, безусловно, может быть приключение, преследуя процессы, которые перезапускают иммунитет к вашему убийству, если вам удастся поймать их в процессе. =)
настаивать мертвецы остаются мертвыми. Это не праздная ссылка, поскольку вам было бы разумно рассматривать зомби и сирот, но в конечном итоге даже самые сложные процессы обычно все еще нуждаются в родителе, поэтому убийство сеанса оболочки должно видеть их на отдых.
применяются все стандартные оговорки, удачи! =)
предположим:
некоторые варианты приходят на ум, чтобы достичь своей цели [решения на основе Unix / Linux]:
использовать баш скрипт, так что скрипт PHP после остановки / завершения / прерывания может быть возобновил:
Контроллер Жира обработчик выполнения, это ключевые функции, которые вы ищете:
очень похож на CRON, но это ключевые особенности только то, что вы нужно
С помощью CRON, вы можете вызвать свой PHP-скрипт с интервалами, например,минуту, затем с помощью этого кода в самом начале вашего PHP-скрипта вы сможете контролировать количество запущенных потоков, выходя, если 8 уже запущены:
поиск процессов, работающих с тем же путем текущего файла, и возвращает количество найденных процессов. Тогда, если их больше 7, выходы.
дополнить ow3nответ, скрипт php CLI похож на любую другую команду и может быть легко повторен в бесконечном while петли. Он будет работать точно так же, как запуск команды сам по себе, но будет работать снова, когда он закончится. Нажмите Ctrl + C когда вы хотите завершить цикл.
Edit: если ваш процесс ловит сигналы (что должно быть, если это 12 фактор app), вы должны быть Ctrl + C вместо того чтобы просто нажать его. Пресса будет поймана процессом (который должен завершиться сам), но while цикл перезапустит процесс снова (что будет полезно, если вы просто хотите перезапустить процесс вместо его завершения). Если ваш процесс не ловит сигналы, то Ctrl + C убьет как процесс, так и while петли.
вот самый простой способ сделать это, без каких-либо дополнительных вывода:
while :; do [command]; done
while :; do echo «test» && sleep 1; done
while :; do php myscript.php; done
тем не менее, я немного обеспокоен последствиями в ваших комментариях:
обновление: Тара сделать запуск и управление флотом процессов еще проще.
Как перезапустить php windows
Мне нужно перезагрузить мой php.ini, и в диалоговом окне справки нет ничего о перезапуске.
15 ответов
Сценарии SysV Init напрямую:
Использование сценария оболочки службы
Использование Upstart (например, ubuntu):
Использование systemd (более новые серверы):
Или любой эквивалент в вашей системе.
Для Mac OS X это то, что я делаю:
Сделайте сценарий /usr /local /etc /php /fpm-restart :
Обычно, service php5-fpm restart будет работать нормально, в актуальном дистрибутиве.
Но иногда он терпит неудачу, сообщая вам о перезагрузке : Неизвестный экземпляр: (или такой).
Теперь, если вам не нравится перезагружать ваш сервер, просто запустите процессы и начните новый (отредактированный здесь):
Это должно работать:
php-fpm перезапустится, если вы отправляете сигнал USR2 в основной процесс:
Затем создайте файл /etc/php-fpm.pid и убедитесь, что у php-fpm есть разрешение на его изменение:
Теперь, в следующий раз, когда начнется php-fpm, вы сможете получить его pid и перезапустить его следующим образом:
Или вы можете объединить их в одну команду:
У меня возникла проблема с перезапуском php7-fpm, потому что я не знал, как именно была названа услуга. Эта функция дала мне ответ:
служба php7.0-fpm restart
apache — Как заставить перезагрузить файл php.ini?
Я настроил веб-сервер на прошлой неделе, он работал нормально.
Сегодня я запрашиваю его домашнюю страницу, я вижу ошибку часового пояса, поскольку это должно быть настроено в моем файле php.ini.
Я пытаюсь phpinfo(); на моем веб-сервере это дает мне:
Но файл php.ini не загружен.
Я исследую, файл php существует и имеет очень большие разрешения:
Конечно, я перезагружаю свой сервер дюжину времени.
Что я могу сделать больше, чтобы решить мою проблему?
Решение
Для принудительной перезагрузки php.ini вам нужно перезапустить apache.
Пытаться sudo service apache2 restart из командной строки.
Или же sudo /etc/init.d/apache2 restart
Другие решения
Сигнал USR1 или изящный заставляет родительский процесс сообщать
дети, чтобы выйти после их текущего запроса (или выйти немедленно
если они ничего не обслуживают). Родитель перечитывает его
файлы конфигурации и повторно открывает свои файлы журнала. Как каждый ребенок умирает
родитель заменяет его на ребенка из нового поколения
Конфигурация, которая начинает обслуживать новые запросы немедленно.
Как перезагрузить службу php7.0-fpm / php5.0-fpm
Я являюсь новым пользователем системы Linux и Unix. Я хочу перезагрузить или перезапустить службу PHP-fpm. Как перезапустить PHP-fpm? Как перезапустить php7.0-fpm на сервере Ubuntu Linux 16.04 LTS?
PHP-FPM — это простой и надежный менеджер процессов FastCGI для PHP. Вы можете использовать его с Apache, Nginx и другими веб-серверами. Он включает в себя множество дополнительных функций. Посмотрим, как остановить или перезапустить или перезагрузить PHP-FPM после обновления файла php.ini.
Как отредактировать файл php.ini или www.conf?
Чтобы изменить php.ini:
Чтобы отредактировать файл конфигурации php-fpm:
После редактирования сохраните и закройте файл. Теперь вам нужно запустить команду в соответствии с версией дистрибутива Linux / Unix после редактирования файла.
Запустите php-fpm на CentOS / RHEL 7
Остановить php-fpm CentOS / RHEL 7
Перезагрузить php-fpm CentOS / RHEL 7
Перезапустите php-fpm CentOS / RHEL 7
Запуск / остановка / перезапуск / перезагрузка php-fpm на CentOS / RHEL 6.x или старше
Введите следующую команду:
Как запустить / остановить / перезагрузить / перезапустить php5-fpm (версия php 5.x) на Ubuntu / Debian Linux
ИЛИ, если вы используете дистрибутив на основе systemd, такой как Ubuntu Linux 16.04+ LTS или Debian Linux 8.x +:
Как запустить / остановить / перезагрузить php7.0-fpm (php version 7.x) на Ubuntu / Debian Linux
ИЛИ, если вы используете дистрибутив на основе systemd, такой как Ubuntu Linux 16.04+ LTS или Debian Linux 8.x +:
Как вы перезапустите php-fpm?
Мне нужно перезагрузить мой php.ini, и в диалоге помощи нет ничего о его перезапуске.
Примечание : добавьте, sudo если не root
Использование сценариев SysV Init напрямую:
Использование скрипта сервисной обертки
Использование Upstart (например, Ubuntu):
Использование systemd (более новые серверы):
Или любой другой эквивалент в вашей системе.
Для Mac OS X это то, что я делаю:
Сделайте скрипт /usr/local/etc/php/fpm-restart :
Как правило, все service php5-fpm restart будет в порядке, на современном распространении.
Но иногда это терпит неудачу, говоря вам restart: Unknown instance: (или тому подобное).
Теперь, если вы не любите перезагружать свой сервер, просто убейте процессы и начните все сначала (отредактировано здесь):
Это должно работать:
Для Mac OSX brew services restart php56 работал для меня.
У меня была проблема с перезапуском php7-fpm, потому что я не знал, как именно была названа служба. Эта функция дала мне ответ:
service php7.0-fpm restart
php-fpm перезапустится, если вы отправите сигнал USR2 основному процессу:
Затем создайте файл /etc/php-fpm.pid и убедитесь, что php-fpm имеет разрешение на его изменение:
Теперь, когда в следующий раз запустится php-fpm, вы сможете получить его pid и перезапустить его так:
Или вы можете объединить их в одну команду:
Автоматический перезапуск PHP-скрипта на выходе
Есть ли способ, с помощью которого я могу автоматически перезапускать скрипт PHP всякий раз, когда он выходит, независимо от того, был ли он завершен должным образом или завершился из-за ошибки или максимального использования памяти и т. Д.?
Сценарий PHP также может перезапускаться с помощью PCNTL.
Отказ от ответственности: точка этого упражнения заключается только в том, чтобы доказать, что PHP вполне способен перезапустить себя и ответить на вопрос:
Есть ли способ, с помощью которого я могу автоматически перезапускать скрипт PHP всякий раз, когда он выходит, независимо от того, был ли он завершен должным образом или завершился из-за ошибки?
Именно поэтому мы можем подробно рассказать о процессах unix, поэтому я предлагаю вам начать с книги PCNTL или обратиться к php-pcntl для получения более подробной информации.
В примерах мы предположим, что это скрипт PHP CLI, запущенный в среде * nix с терминала с полупристойной оболочкой с помощью команды:
Мы передаем атрибут счетчика перезапуска в качестве индикатора, что процесс был перезапущен.
Могу ли я автоматически перезапустить скрипт PHP?
Да, я могу!
Независимо от того, было ли оно прекращено должным образом?
Да, я могу перезапустить, если это прекращено!
Или прекращено из-за ошибки?
То же самое!
Но вы знаете, что я хочу больше, чем это правильно?
Безусловно! Я могу перезапустить на kill, hub даже Ctrl-C!
Как мне его прекратить?
Если вы наполнили процесс, удерживая Ctrl-C, вы можете просто поймать его где-нибудь в выключении.
Я не хочу, чтобы все эти ошибки можно было перезапустить тоже?
Без проблем я тоже могу обрабатывать ошибки!
То, что я пытаюсь сделать, состоит в том, что даже если вы можете перезапустить сценарий, который потерпел неудачу, это не повод для отказа от кода. Хотя для этой практики могут существовать жизнеспособные варианты использования, я категорически не согласен с тем, что перезапуск при сбое должен использоваться как решение для сбоев сценариев из-за ошибок! Как мы можем видеть из этих примеров, нет никакого способа точно узнать, где это произошло, поэтому мы не можем быть уверены, где он начнется снова. Переход на решение «быстрого исправления», которое может показаться работоспособным, может иметь больше проблем, чем раньше.
Вместо этого я предпочел бы увидеть дефект, который был бы рассмотрен с помощью некоторых правильных модульных тестов, которые помогут избавиться от преступника, чтобы мы могли исправить эту проблему. Если у PHP заканчивается память, его можно избежать за счет консервативного использования ресурсов, отключив переменные после использования. (кстати, вы найдете назначение нулевого значения намного быстрее, чем использование unset для одного и того же результата). Я боюсь, хотя, если вы оставите его нерешенным, перезапуск будет определенно служить подходящим помощником для банки червей, которые у вас уже есть.
Здесь будут драконы.
Продвинутое использование, а не слабое сердце.
Чтобы запустить отдельный процесс, измените функцию restartMyself, чтобы:
Это, безусловно, может быть приключением, преследующим процессы, которые возобновляют иммунитет к вашему убийству, если вам удастся поймать их в процессе. знак равно
настаивать на том, чтобы нежить оставалась мертвой. Это не простаивающая ссылка, так как вам было бы разумно рассмотреть зомби и сирот, но в конечном итоге даже самым сложным процессам, как правило, по-прежнему нужен родитель, поэтому убийство сеанса оболочки должно заставить их отдохнуть.
Все стандартные отказы распространяются, удачи! знак равно
Некоторые варианты приходят на ум для достижения вашей цели [Решения на базе Unix / Linux]:
Обработчик выполнения Fat Controller – вот основные функции, которые вы ищете:
очень похож на CRON, но эти ключевые функции – это то, что вам нужно
поиск процессов, работающих с одним и тем же путем текущего файла, и возвращает количество найденных процессов. Затем, если их больше 7, выйдет.
Edit: Если ваш процесс ловит сигналы (что необходимо, если это приложение с 12 факторами ), вам нужно будет удерживать Ctrl + C, а не просто нажимать на него. Пресса будет захвачена процессом (который должен завершиться сам), но цикл while снова перезапустит процесс (что полезно, если вы просто хотите перезапустить процесс, а не прекратить его). Если ваш процесс не захватывает сигналы, тогда Ctrl + C убьет как процесс, так и цикл while.
Вот простейший способ сделать это без лишнего вывода:
while :; do [command]; done
while :; do echo «test» && sleep 1; done
while :; do php myscript.php; done
Тем не менее, я немного обеспокоен последствиями в ваших комментариях:
Обновление. Контейнеры упрощают управление и управление флотом процессов.
Чтобы перезапустить скрипт каждый раз, когда он перестает работать, вы можете обернуть скрипт user1179181 в цикле.
Только мои 5 центов. Перезапуск PCNTL с пользовательской обработкой ошибок.