¿Cómo puedo ejecutar un script de shell en segundo plano?
¿Cómo puedo ejecutar un script de shell en segundo plano?
Respuestas:
Dependiendo de lo que desee, simplemente agregue un & al final del comando
script.sh &
command &
Si lo está ejecutando en una terminal y desea cerrar la terminal, use nohup o disown
nohup
nohup script.sh &
desconocer
script &
disown
Si eso no es lo que busca, sea más específico en su pregunta.
htop
para ver el uso de la CPU, pero el problema es que el primer script comienza a crear la salida a la consola y parece evitar otras acciones (ejecutar el segundo script, ejecutar htop
).
simplemente puede cambiar de pantalla y ejecutar su script en esa segunda pantalla. Cuando la secuencia de comandos comenzó el 2º, regrese al 1º y haga lo que quiera. La segunda pantalla estará en segundo plano como "ventana de terminal" adicional. y no detendrá el procesamiento incluso cuando cierre su conexión ssh mientras está en la primera pantalla.
screen --help
Use: screen [-opts] [cmd [args]]
or: screen -r [host.tty]
Options:
-4 Resolve hostnames only to IPv4 addresses.
-6 Resolve hostnames only to IPv6 addresses.
-a Force all capabilities into each window's termcap.
-A -[r|R] Adapt all windows to the new display width & height.
-c file Read configuration file instead of '.screenrc'.
-d (-r) Detach the elsewhere running screen (and reattach here).
-dmS name Start as daemon: Screen session in detached mode.
-D (-r) Detach and logout remote (and reattach here).
-D -RR Do whatever is needed to get a screen session.
-e xy Change command characters.
-f Flow control on, -fn = off, -fa = auto.
-h lines Set the size of the scrollback history buffer.
-i Interrupt output sooner when flow control is on.
-l Login mode on (update /var/run/utmp), -ln = off.
-ls [match] or -list. Do nothing, just list our SockDir [on possible matches].
-L Turn on output logging.
-m ignore $STY variable, do create a new screen session.
-O Choose optimal output rather than exact vt100 emulation.
-p window Preselect the named window if it exists.
-q Quiet startup. Exits with non-zero return code if unsuccessful.
-r [session] Reattach to a detached screen process.
-R Reattach if possible, otherwise start a new session.
-s shell Shell to execute rather than $SHELL.
-S sockname Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
-t title Set title. (window's name).
-T term Use term as $TERM for windows, rather than "screen".
-U Tell screen to use UTF-8 encoding.
-v Print "Screen version 4.01.00devel (GNU) 2-May-06".
-wipe [match] Do nothing, just clean up SockDir [on possible matches].
-x Attach to a not detached screen. (Multi display mode).
-X Execute <cmd> as a screen command in the specified session.
ctrl+ a, ccreará una nueva "ventana" en su sesión de pantalla activa. Puede alternar entre varias ventanas (como indicó Ansgar) con ctrl+ a, npara la siguiente ventana, y ctrl+ a, ppara la ventana anterior.
ctrl+ a, "le dará una lista de todas sus ventanas abiertas.
Más: https://superuser.com/questions/476709/quickly-switching-between-virtual-sessions-screen
Si desea que el script permanezca después de cerrar el terminal, otra opción es usar setsid
:
setsid script.sh
Para obtener más información acerca de las diferencias entre nohup
, disown
, &
y setsid
: Diferencia entre nohup, y disown y