web-dev-qa-db-fra.com

exécuter Mac Chrome avec des arguments de ligne de commande comme processus d'arrière-plan

J'ai 2 alias sur mon .bash_profile fichier contenant:

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

mais lors de l'exécution, il ouvre Chrome mais continue de maintenir la fenêtre du terminal ... une fois que je ferme la fenêtre du terminal, il ferme également le chrome.

Existe-t-il un moyen de le faire fonctionner en arrière-plan?

Je me souviens que j'utilise ceci pour thin webserver avec thin start -d ou thin start --daemonize?

Merci


mise à jour

en plus de la réponse de James, j'ai également trouvé la ligne de commande Nohup qui m'a permis de quitter le terminal sans problème qui était un mélange en ajoutant le & à la commande Nohup:

$ Nohup chromex &

la sortie par défaut est écrite dans le Nohup.out fichier

Pour arrêter le travail, je peux exécuter ps ax, recherchez le PID via la bonne commande, puis kill -9 PID

27
zanona

Mettez une esperluette à la fin de la ligne de commande.

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

Si vous ne voulez pas non plus voir le débogage chrome, redirigez stdout et stderr vers/dev/null

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

Sur Mac, vous pouvez rendre cela encore plus simple:

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

Cependant, votre deuxième exigence rend cela un peu plus délicat. Le & doit être à la fin de la ligne de commande; mais votre deuxième alias ajoute des commandes à la fin de la première commande - c'est-à-dire après l'esperluette - et donc cela ne fonctionne pas.

Pour contourner ce problème, nous pouvons redéfinir le "chrome" en tant que fonction.

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

Le $* signifie que tous les paramètres de ligne de commande passés à la fonction seront insérés ici, avant l'esperluette. Cela signifie que vous pouvez toujours définir votre deuxième alias comme

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

Celui-ci sera étendu à

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

BTW, cela est simplement appelé en cours d'exécution "en arrière-plan". "En tant que démon" se réfère à un processus serveur qui s'exécute chaque fois que la machine est allumée et n'est lié à aucune session d'utilisateur.

53
James Polley

J'ai défini un alias sur mon .zshr (idem pour .bash_profile) comme ceci:

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

alors je peux ouvrir le fichier html par Firefox ou Chrome

par exemple, par Firefox

firefox xxx/index.html

par Chrome

chrome xxx/index.html
3
david