Самый эффективный способ запуска и отделения программы от терминала?
Я пытаюсь запустить программу из Терминала таким образом, чтобы произошло следующее:
- Закрытие Терминала не закрывает программу
- Программа ничего не выводит в Терминал при открытии, использовании или закрытии
- Терминал свободен для других целей
- Команда короткая и сладкая
- Нет выходного файла для беспокойства
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 &)