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

Достаточно часто возникает потребность запустить длительный скрипт в фоновом режиме. Для решение этой задачи существует несколько инструментов: nohup, screen, tmux. Наиболее простым инструментом является nohup.

Для примера использования создадим скрипт test.php, для его запуска нужно выполнить простую команду:

nohup php -q test.php 2>&1 &

Проверить выполняеться ли скрипт можно с помощью ps ax:

root@dev:~# ps ax | grep 'test.php'
15426 pts/0    S      0:00 php -q test.php

Весь вывод будет записан в nohup.out если мы хотим перенаправить вывод то нужно добавить > script.log :

nohup php -q test.php > script.log 2>&1 &

Иногда нужно запустить последовательно 2 скрипта, для этого нужно использовать оператор &&

nohup php -q test.php && php -q test.php > script.log 2>&1 &

В данных примерах был использован php скрипт, но таким образом можно запустить совершенно любой скрипт на любом языке программирования. Кроме этого можно запустить длительную консольную команду и перенаправить вывод в файл

TL;DR

Используйте инструмент nohup для запуска длительных фоновых скриптов.


Подпишитесь на Хайлоад с помощью Google аккаунта
или закройте эту хрень