Команда disown является встроенной командой таких командных оболочек, как Bash, Zsh и Ksh и позволяет убрать заданную задачу из таблицы задач командной оболочки. Это делается для того заблокировать отправку системного сигнала SIGHUP запущенному с помощью командной оболочки и исполняющемуся в фоновом режиме процессу при завершении работы командной оболочки. В отличие от команды nohup, рассматриваемая команда может использоваться в любой момент после создания задачи, а не до только при ее создании и не отсоединяет стандартные потоки ввода, вывода и ошибок исполняющегося процесса от командной оболочки.
Базовый синтаксис команды выглядит следующим образом:
$ disown [параметры] [идентификатор-задачи]
Команда поддерживает несколько параметров, которые имеют различную семантику в различных командных оболочках. В случае использования командной оболочки Bash следует обратить внимание на параметр -h, позволяющий лишь заблокировать отправку сигнала SIGHUP исполняющемуся процессу при закрытии командной оболочки без удаления задачи из таблицы задач этой командной оболочки и, соответственно, потери контроля над задачей, параметр -a, позволяющий удалить из списка задач командной оболочки все задачи в случае отсутствия идентификатора задачи и параметр -r, позволяющий удалить из списка задач командной оболочки все исполняющиеся задачи.
Для ознакомления со списком текущих задач следует использовать команду:
$ jobs -l
Предположим, что вам нужно запустить приложение с графическим интерфейсом gedit с помощью соответствующей команды закрыть окно эмулятора терминала без завершения работы этого приложения. В этом случае сначала следует запустить его в фоновом режиме:
$ gedit &
В результате вы увидите окно приложения, а в окне терминала будет выведен идентификатор соответствующей задачи, например:
[1] 14191
Теперь следует удалить задачу с известным идентификатором из таблицы задач командной оболочки:
$ disown 14191
После этого вы можете закрыть окно эмулятора терминала. Приложение с графическим интерфейсом будет работать как ни в чем ни бывало.