Я запускаю приложения из терминала с помощью таких команд:
/Applications/Mail.app/Contents/MacOS/Mail &
Важной частью является &
.
Для Unix / Linux / Solaris:
- В школе я узнал, что добавление программы
&
заставляет программу жить самостоятельно. - Я очень хорошо помню, как запускал команду вроде,
xeyes &
и программа работала безопасно даже после закрытия оболочки.
- В школе я узнал, что добавление программы
В Mac OS X (внутри Unix):
- Я запускаю приложение
&
и закрываю окно терминала: приложение закрывается! - Почему это нежелательное поведение происходит в Mac OS X?
- Как это можно исправить?
- Я запускаю приложение
macos
terminal
applications
command-line
unix
Николас Барбулеско
источник
источник
Ответы:
«Стандартный» способ достижения того, чего вы хотите достичь (в OS X, а также в Linux, FreeBSD или других системах), заключается в использовании команды
nohup
:Это запустится
program
, что будет работать в фоновом режиме относительно оболочки из-за&
- и будет игнорировать сигналы зависания из-за команды nohup.Таким образом, программа продолжит работу, даже если вы закроете оболочку. Не имеет значения, закрываете ли вы оболочку, потому что закрываете Terminal.app, или закрываете оболочку, потому что вы отключаетесь от ssh-соединения с компьютером или чем-то подобным.
источник
nohup.out
в текущей папке. Даже когда нечего писать. Через несколько недель у меня будут файлыnohup.out
везде на моем Mac. :-(nohup command>/dev/null&
илиcommand&disown
.Когда вы закрываете окно терминала, оно отправляет SIGHUP (сигнал зависания) в оболочку, которая затем отправляет SIGHUP всем запущенным процессам . Это традиционное поведение для bash и многих других оболочек, и традиционным решением этого является использование nohup.
Существуют различия между различными машинами Unix, поэтому возможно, что используемые вами эмуляторы терминала или используемые вами оболочки работают по-разному. Но это не относится к OS X. Например, есть вопрос по этой же проблеме в Ubuntu.
источник
Используя амперсанд "
&
", вы говорите терминалу запустить процесс в фоновом режиме самой оболочки. Таким образом, когда вы закрываете оболочку (и убиваете процесс), графический интерфейс (сам Mail.app) также закрывается.Правильная команда для запуска Mail из терминала:
Редактировать: Я только что нашел это на U & L Stack Exchange: Что означает амперсанд в конце строки сценария оболочки? Предоставленные ответы превосходны и объясняют, что именно происходит, более подробно и лучше, чем я когда-либо мог! Я настоятельно рекомендую прочитать это.
источник
/Users/nicolas/Desktop/Firefox-29-fr/Firefox.app/Contents/MacOS/firefox -profile "/Users/nicolas/Desktop/Firefox-29-fr/Profil-Firefox-29-fr/" -no-remote &
/Applications
, а по определенному пути? Как это:/Users/nicolas/Desktop/Firefox-29-fr/Firefox.app/Contents/MacOS/firefox -profile "/Users/nicolas/Desktop/Firefox-29-fr/Profil-Firefox-29-fr/" -no-remote &
open -a Applications/Mail.app/Contents/MacOS/Mail; exit
@jksoegaard имеет правильные команды, но, как вы упомянули в комментарии, он создает файл nohup.out. Чтобы остановить создание файла nohup.out, вам нужно перенаправить STDOUT и STDERR куда-нибудь еще. Полная команда будет
nohup program &>/dev/null &
. Это запустит вашу программу в фоновом режиме, игнорируя SIGHUP и отправляя все STDOUT и STDERR в / dev / null.Однако, если вы не забыли добавить nohup (как в исходном вопросе), вы можете использовать
disown -arh
команду, чтобы отметить все фоновые запущенные задания, чтобы игнорировать SIGHUP.источник
Я нашел решение:
(/Applications/Mail.app/Contents/MacOS/Mail &)
Это просто, это красиво, и это работает!
Скобки
( )
запускают команду в под-оболочке.источник
Или вы можете попробовать
open -a /Applications/Mail.app
источник
Я нашел решение: бороться со злом со злом.
Я запускаю свое приложение с такой командой:
/Applications/Mail.app/Contents/MacOS/Mail & exit
Снаряд выходит сразу. И приложение выживает, даже после того, как я закрою окно терминала.
Но это решение не очень удобно.
источник
/Applications
и не связаны с моим Mac..app
папки называются «связками», иopen
команда может запускать их, находятся ли они в/Applications
папке или в любой другой папке. Термин «комплект» в данном контексте не означает «поставляется с OS X».