web-dev-qa-db-ja.com

Mac Chromeコマンドライン引数をバックグラウンドプロセスとして実行する

次を含む.bash_profileファイルに2つのエイリアスがあります。

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

しかし、実行すると、Chromeが開きますが、端末ウィンドウを保持し続けます...端末ウィンドウを閉じると、クロムも閉じます。

バックグラウンドで実行する方法はありますか?

thin start -dまたはthin start --daemonizethinウェブサーバーにこれを使用したことを思い出しましたか?

ありがとう


更新

ジェームズの答えの他に、Nohupコマンドに&を追加することで、問題なく端末を終了できるNohupコマンドラインも見つかりました。

$ Nohup chromex &

デフォルトの出力はNohup.outファイルに書き込まれます

ジョブを停止するには、ps axを実行し、正しいコマンドでPIDを見つけ、kill -9 PIDを実行します。

27
zanona

コマンドラインの最後にアンパサンドを置きます。

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"

ただし、2番目の要件により、これは少し複雑になります。 &はコマンドラインの最後にある必要があります。しかし、2番目のエイリアスは最初のコマンドの最後にコマンドを追加します-つまり、アンパサンドの後-これは機能しません。

これを回避するために、関数として「クロム」を再定義できます。

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

$*は、関数に渡されたコマンドラインパラメータがアンパサンドの前にここに挿入されることを意味します。これは、2番目のエイリアスを次のように定義できることを意味します

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

これはに展開されます

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

ところで、これは単に「バックグラウンドで」実行されると呼ばれます。 「デーモンとして」とは、マシンの電源がオンになるたびに実行されるサーバープロセスを指し、どのユーザーのセッションにも関連付けられていません。

53
James Polley

.zshr(.bash_profileと同じ)でエイリアスを次のように定義しました。

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

その後、FirefoxまたはChromeでhtmlファイルを開くことができます

たとえば、Firefoxで

firefox xxx/index.html

chromeで

chrome xxx/index.html
3
david