Команда disown

Команда disown является встроенной командой таких командных оболочек, как Bash, Zsh и Ksh и позволяет убрать заданную задачу из таблицы задач командной оболочки. Это делается для того заблокировать отправку системного сигнала SIGHUP запущенному с помощью командной оболочки и исполняющемуся в фоновом режиме процессу при завершении работы командной оболочки. В отличие от команды nohup, рассматриваемая команда может использоваться в любой момент после создания задачи, а не до только при ее создании и не отсоединяет стандартные потоки ввода, вывода и ошибок исполняющегося процесса от командной оболочки.

Базовый синтаксис команды выглядит следующим образом:

$ disown [параметры] [идентификатор-задачи]

Команда поддерживает несколько параметров, которые имеют различную семантику в различных командных оболочках. В случае использования командной оболочки Bash следует обратить внимание на параметр -h, позволяющий лишь заблокировать отправку сигнала SIGHUP исполняющемуся процессу при закрытии командной оболочки без удаления задачи из таблицы задач этой командной оболочки и, соответственно, потери контроля над задачей, параметр -a, позволяющий удалить из списка задач командной оболочки все задачи в случае отсутствия идентификатора задачи и параметр -r, позволяющий удалить из списка задач командной оболочки все исполняющиеся задачи.

Для ознакомления со списком текущих задач следует использовать команду:

$ jobs -l

Примеры использования

Запуск приложения с графическим интерфейсом

Предположим, что вам нужно запустить приложение с графическим интерфейсом gedit с помощью соответствующей команды закрыть окно эмулятора терминала без завершения работы этого приложения. В этом случае сначала следует запустить его в фоновом режиме:

$ gedit &

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

[1] 14191

Теперь следует удалить задачу с известным идентификатором из  таблицы задач командной оболочки:

$ disown 14191

После этого вы можете закрыть окно эмулятора терминала. Приложение с графическим интерфейсом будет работать как ни в чем ни бывало.