使用命令行参数作为后台进程运行Mac Chrome

时间:2011-06-01 11:59:01

标签: google-chrome daemon arguments background-process

我的.bash_profile文件中有2个别名,其中包含:

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

但是在运行时,它会打开Chrome但仍然保持终端窗口...一旦我关闭终端窗口,它也会关闭chrome。

有没有办法让它在后台运行?

我记得我在thinthin start -d的{​​{1}}网络服务器上使用此功能?

由于


更新

除了詹姆斯回答之外,我还找到了thin start --daemonize命令行,这使得我可以通过将nohup附加到&命令来解决终端而没有问题:

nohup

默认输出将写入$ nohup chromex & 文件

要停止作业,我可以运行nohup.out,通过正确的命令找到PID然后ps ax

2 个答案:

答案 0 :(得分:53)

在命令行的末尾添加&符号。

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 &
顺便说一下,这就是所谓的“在后台”运行。 “作为守护进程”是指每当打开机器时运行的服务器进程,并且不依赖于任何用户的会话。

答案 1 :(得分:3)

我在.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