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