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

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

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

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

решение1

Видеть man nohup:

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

Отвечать:

nohup program-name &

решение2

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

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

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

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

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

Затем

launch_and_forget program args "args args" ...

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

решение3

Вы можете очень просто использовать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/т.д.

решение4

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

Связанный контент