Самый эффективный способ запуска и отделения программы от терминала?

Я пытаюсь запустить программу из Терминала таким образом, чтобы произошло следующее:

  1. Закрытие Терминала не закрывает программу
  2. Программа ничего не выводит в Терминал при открытии, использовании или закрытии
  3. Терминал свободен для других целей
  4. Команда короткая и сладкая
  5. Нет выходного файла для беспокойства

6 ответов

Увидеть man nohup:

NAME
   nohup - run a command immune to hangups, with output to a non-tty

Ответ:

nohup program-name &

Я думаю, что это будет наиболее полный способ:

program-name </dev/null &>/dev/null &
disown %%

Отказ от фонового процесса означает, что оболочка больше не будет его отслеживать. Он не скажет вам, когда это будет сделано. Это не помешает вам закрыть оболочку. %% означает "самая последняя фоновая работа".

Если вы хотите скрыть все детали, поместите такую ​​функцию в ваш.bashrc

launch_and_forget () { "$@" </dev/null &>/dev/null & disown %%; }

затем

launch_and_forget program args "args args" ...

Дайте имя, которое имеет значение для вас.

Вы можете очень просто использовать setsid:-

NAME
       setsid - run a program in a new session

SYNOPSIS
       setsid program [arg...]

DESCRIPTION
       setsid runs a program in a new session.

Попробуйте следующую команду:-

setsid <command>

Пример:- setsid gedit, setsid nautilus ~/Downloads/ и т.п.

Использование tmux,

Первый запуск tmux, затем выполните любую команду, которую вы хотите. Вы можете закрыть tmux окно или вернуться назад по ярлыку CTRL-B D, На самом деле, вы можете даже позже присоединить tmux attach,

Я бы порекомендовал либо tmux, как предложил Siyuan Ren, либо GNU Screen. Таким образом, вы получите новый терминал для вашей команды. Вы можете отсоединить его и забыть об этом, но вы можете вернуться, если передумаете.

Я взял и продолжаю использовать...

(nohup program-name 2>/dev/null &)
Другие вопросы по тегам