PHP CLI. Как запустить скрипт из терминала по SSH, закрыть терминал, а потом снова открыть и увидеть ход выполнения?

Здравствуйте!
У меня есть удаленный сервер на debian, к которому я подключаюсь через SSH и запускаю на выполнение из консоли один php скрипт, который может выполняться несколько часов. Скрипт через echo выводит информацию о ходе выполнения и обработке некоторых данных. Можно ли как-то запустить скрипт, закрыть терминал, а потом, через некоторое время открыть терминал снова и посмотреть ход выполнения (видеть то, что выводит скрипт в настоящий момент)?

Запуск скрипта я осуществляю следующим образом
php script.php

Я конечно могу писать логи в файл или делать вывод в файл
php script.php > script.txt
но в таком случае, как я понимаю, файл будет занят приложением пока не запишется до конца. А если не будет, то я не смогу видеть его изменения в реальном времени (думаю, что можно. Но как - не знаю)
  • Вопрос задан
  • 12439 просмотров
Решения вопроса 1
@malerix
screen и tmux. Вот вам уже готовый рецепт.
Как работает (примерно):
$ ssh localhost
$ screen
запускается процесс screen, в нём bash или что-нибудь ещё.
Запускаете вашу команду:
$(screen) php script.php
нажимаете Ctrl+A, Ctrl+D. Попадаете обратно в первый шелл.
отключаемся
$ exit
пьём кофе.
подключаемся вновь:
$ ssh localhost
$ screen -r
Видим результат работы нашей команды и приглашение ввести новую.
$(screen)

Остальное описано в man screen.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
kivsiak
@kivsiak
software engineer
Как вариант, запускать скрипт через nohup, тогда он не будет привязан к терминалу.
nohup php script.php > file.log &
Мониторить в реальном времени добавление строк в файл можно черезtail -f file.log
Ответ написан
Комментировать
Советую посмотреть в строну tmux (аналог screen)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы