запустить Mac Chrome с аргументами командной строки в качестве фонового процесса - PullRequest
27 голосов
/ 01 июня 2011

У меня есть 2 псевдонима в моем файле .bash_profile, содержащем:

alias chrome="/Applications/Google\\ \\Chrome.app/Contents/MacOS/Google\\ \\Chrome"
alias chromex="chrome --disable-web-security"

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

Есть ли способ заставить его работать в фоновом режиме?

Я вспомнил, что я использую это для thin веб-сервера с thin start -d или thin start --daemonize?

Спасибо


обновление

кроме ответа Джеймса, я также нашел командную строку nohup, которая позволила мне без проблем выйти из терминала, добавив & к команде nohup:

$ nohup chromex &

вывод по умолчанию записывается в файл nohup.out

Чтобы остановить работу, я могу запустить ps ax, найти PID с помощью правильной команды, а затем kill -9 PID

Ответы [ 2 ]

53 голосов
/ 01 июня 2011

Поместите амперсанд в конец командной строки.

alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome &"

Если вы также не хотите видеть какие-либо отладочные выходные данные Chrome, перенаправьте stdout и stderr в / dev / null

alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome 2>&1 > &"

На Mac вы можете сделать это еще проще:

alias chrome="open /Applications/Google\ Chrome.app/ --args --disable-web-security"

Ваше второе требование делает это немного сложнее, хотя. Символ & должен находиться в конце командной строки; но ваш второй псевдоним добавляет команды в конец первой команды, т. е. после амперсанда, и поэтому это не работает.

Чтобы обойти это, мы можем переопределить 'chrome' как функцию.

chrome () {
  /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome $* 2>&1 &
}

$* означает, что любые параметры командной строки, переданные функции, будут вставлены здесь, перед амперсандом. Это означает, что вы все еще можете определить свой второй псевдоним как

alias chromex="chrome --disable-web-security"

Это будет расширено до

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security 2>&1 &

Кстати, это называется «в фоновом режиме». «Как демон» означает серверный процесс, который запускается при каждом включении компьютера и не привязан к сеансу пользователя.

3 голосов
/ 04 апреля 2014

Я определил псевдоним на моем .zshr (то же самое для .bash_profile) следующим образом:

open_by_browser(){ open -a $1 $2}
alias firefox='open_by_browser firefox'
alias chrome='open_by_browser "Google Chrome"'

, затем я могу открыть html-файл с помощью Firefox или Chrome

, например, с помощью Firefox

firefox xxx/index.html

от Chrome

chrome xxx/index.html
...