Запустить команду в фоне в Linux

Во многочисленных мануалах написано, что чтобы запустить команду в фоне, нужно вконце нее поставить знак &.

Обычный запуск

watch data >> /tmp/data.txt

Запуск в фоне:

watch data >> /tmp/data.txt &

Проблемка в том, что при таком способе запуска программа в фоне заморозится и не будет работать, пока ее не потребуют в foreground командой fg. Это происходит из-за того, что родителем запускаемого процесса будет bash-шелл, и когда программа будет продолжать работать, стандартный ввод/вывод данной программы станет путаться с вводом/выводом шелла.

Запуск без остановки в фоне:

(watch data >> /tmp/data.txt &)

При подобном запуске родителем программы будет непосредстванно init.

Хинт: родителя заброшенной программы можно увидеть через htop, переключившись на древовидное представление.

Читайте также:  Проиграть несколько файлов по порядку в Linux