Necesito ejecutar un proceso en segundo plano y luego salir de la terminal actual.
El siguiente comando produce un error:
> google-chrome-stable &! && exit
zsh: parse error near '&&'
He considerado simplemente invocar 'google-chrome-stable &!' y verificar el código de error mediante una declaración if, pero espero identificar una forma más sencilla de lograrlo.
Respuesta1
&!
y &&
ambos comandos separados, por lo que no puedes combinar ambos, por lo que
google-chrome-stable &! exit
Probablemente sea lo que buscas.
No puede obtener el código de salida hasta que salga el comando en segundo plano...
Respuesta2
El estado de salida devuelto al shell que invoca al iniciar un trabajo en segundo plano essiemprecero:
% bogus &
[1] 66712
% zsh: command not found: bogus
[1] + exit 127 bogus
% echo $?
0
... y ambos &!
y &&
son terminadores de comando. Esto significa que su comando probablemente debería escribirse como
google-chrome-stable &! exit
o como equivalente
google-chrome-stable &!
exit
Solo puede obtener el estado de salida real del trabajo en segundo plano utilizando wait
el ID del trabajo (no hay ninguno desde que lo repudió) o el ID del proceso (pero no puede, porque repudió ese proceso y, por lo tanto, es ya no es un proceso que el shell considera un proceso secundario; se elimina de la lista de trabajos actuales del shell).
Si no hubieras repudiado el trabajo, tal vez a través de
google-chrome-stable & chrome_pid=$!
entonces el comando wait $chrome_pid
eventualmente saldría con el estado de salida de su trabajo en segundo plano, pero no hasta que ese trabajo finalice, ya sea por no poder iniciar o por cerrar el navegador de alguna manera.