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

zan*_*ona 27 arguments daemon google-chrome background-process

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

alias chrome="/Applications/Google\\ \\Chrome.app/Contents/MacOS/Google\\ \\Chrome"
alias chromex="chrome --disable-web-security"
Run Code Online (Sandbox Code Playgroud)

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

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

我记得我用这个用于thinweb服务器thin start -d或者thin start --daemonize

谢谢


更新

除了詹姆斯回答,我还找到了nohup命令行,这使我可以退出终端而没有问题,这是一个混合,通过附加&nohup命令:

$ nohup chromex &
Run Code Online (Sandbox Code Playgroud)

默认输出将写入nohup.out文件

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

Jam*_*ley 53

将一个&符号放在命令行的末尾.

alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome &"
Run Code Online (Sandbox Code Playgroud)

如果您还不希望看到任何调试chrome输出,请将stdout和stderr重定向到/ dev/null

alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome 2>&1 > &"
Run Code Online (Sandbox Code Playgroud)

在Mac上,您可以使这更简单:

alias chrome="open /Applications/Google\ Chrome.app/ --args --disable-web-security"
Run Code Online (Sandbox Code Playgroud)

你的第二个要求使这个稍微复杂一点.&需要在命令行的末尾; 但是你的第二个别名会在第一个命令的末尾添加命令 - 即在&符之后 - 所以这不起作用.

为了解决这个问题,我们可以将'chrome'重新定义为一个函数.

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

$*意味着传递给函数的任何命令行参数都将插入到&符号之前.这意味着您仍然可以将第二个别名定义为

alias chromex="chrome --disable-web-security"
Run Code Online (Sandbox Code Playgroud)

这将扩展到

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security 2>&1 &
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这只是被称为"在后台"运行."作为守护进程"将指的是每当打开机器时运行的服务器进程,并且不依赖于任何用户的会话.

  • 嗨再次詹姆斯,这就是诀窍`open/Applications/Google\Chrome.app/ --args --disable-web-security`我相信你必须在`--args`标志之后传递参数......我只是编辑了你的答案,所以我可以把它标记为正确:)谢谢 (2认同)