автоматически отключать приложение при запуске его из терминала

автоматически отключать приложение при запуске его из терминала

Как автоматически отказаться от приложения после его запуска из терминала?

Например: если вы запустите терминал и запустите firefoxприложение, оно запустится, но когда вы закроете терминал, Firefox также закроется. Чтобы избежать непреднамеренного закрытия приложений, запущенных из терминала, можно сначала перевести их в фоновый режим с помощью амперсанта:, firefox &что также восстановит возможность использовать приглашение этого терминала. Затем вы можете отречься от приложения из того же терминала, используя идентификатор процесса (PID) приложения, см. этот пример ниже:

$ firefox & 
$ ps | grep firefox
14917 pts/6    00:00:00 firefox
$ disown 14917

Приложение теперь работает независимо от используемого вами терминала, и закрытие терминала больше не приведет к завершению работы приложения.

Но как сделать это автоматически при каждом запуске приложения?

решение1

Самый простой способ — выполнить:

daemon firefox

так что вы можете продолжить использование/закрыть сам терминал

решение2

ПРАВКА: алучший ответбыл предоставлен IV.

Чтобы сделать это автоматически, вы можете использовать псевдоним bash. Если вы добавите следующие строки в файл .bash_aliases в вашем домашнем каталоге, вы сможете запустить любое приложение my_applicationиз терминала, автоматически переведя его в фоновый режим и впоследствии отменив его владение этим терминалом, используя команду s my_application:

# start programs from shell but immediately disown them
startAndDisown() {
    $1 & disown $! 
}
alias s=startAndDisown

Обратите внимание, что $!автоматически возвращается PID последнего асинхронного задания.

решение3

firefox & disown $!не работает для меня, но похожее решение, которое работает для меня, этоfirefox&;disown

Другое решение, которое не требует disownиспользования, — это использование GNU Screen. Он сохранит вашу терминальную сессию, даже если вы закроете окно терминала. Однако его практичность ограничена тем, как вы используете свой терминал. Если вы используете только одно окно терминала за раз, это отличное решение. Если вы используете больше терминалов, то меньше. Установите screen с помощью вашего любимого менеджера пакетов, затем каждый раз, когда вы открываете тип терминала screen -r(или screenесли сеанс screen не запущен). Тогда вам не придется беспокоиться о закрытии терминала. Это очень узкоспециализированное решение, но оно может вам подойти.

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