На этот вопрос уже есть ответ здесь:
Я пытаюсь запустить программу из Терминала таким образом, что происходит следующее:
См. man nohup
:
NAME
nohup - run a command immune to hangups, with output to a non-tty
Ответ:
nohup program-name &
Используйте tmux
.
Первый запуск tmux
, затем выполняет любую команду, которую Вы хотите. Можно закрыться tmux
окно или ронять ярлыком CTRL-B D
. На самом деле можно еще позже повторно прикрепить tmux attach
.
Я думаю, что это было бы самым полным путем:
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.
следующий пример command:-
setsid <command>
:-setsid gedit
, setsid nautilus ~/Downloads/
и т.д.
Я рекомендовал бы или tmux, как Siyuan Ren предложенный, или Экран GNU. Тем путем Вы получаете новый терминал для своей команды. Можно отсоединить его и забыть о нем, но можно возвратиться, если Вы передумали.
Я взял, и продолжите использовать...
(nohup program-name 2>/dev/null &)