Comment puis-je exécuter un script Shell en arrière-plan?
Selon ce que vous voulez, ajoutez simplement un & à la fin de la commande
script.sh &
command &
Si vous l’exécutez dans un terminal et que vous voulez ensuite fermer le terminal, utilisez Nohup ou désavouez
Nohup
Nohup script.sh &
renier
script &
disown
Si ce n'est pas ce que vous recherchez, soyez plus précis dans votre question.
vous pouvez simplement changer d'écran et exécuter votre script sur ce deuxième écran. Lorsque le script a commencé sur 2nd, revenez au 1er et faites ce que vous voulez. Le 2ème écran sera à l'arrière-plan en tant que "fenêtre de terminal" supplémentaire. et le traitement ne cessera pas même lorsque vous fermez votre connexion ssh lorsque vous êtes au 1er écran.
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, c créera une nouvelle "fenêtre" dans votre session d'écran active. Vous pouvez basculer entre plusieurs fenêtres (comme indiqué par Ansgar) avec ctrl+a, n pour la fenêtre suivante, et ctrl+a,p pour la fenêtre précédente.
ctrl+a," vous donnera une liste de toutes vos fenêtres ouvertes.
Plus: https://superuser.com/questions/476709/quickly-switching-between-virtual-sessions-screen
Si vous voulez que le script reste après la fermeture du terminal, une autre option consiste à utiliser setsid
name__:
setsid script.sh
Pour plus d'informations sur les différences entre Nohup
name__, disown
name__, &
et setsid
name__: Différence entre Nohup, disown et &