Как я могу запустить сценарий оболочки в фоновом режиме?
В зависимости от того, чего вы хотите, просто добавьте & в конец команды
script.sh &command &
Если вы запускаете его в терминале и хотите затем закрыть терминал, используйте nohup или disown
нет, нет
nohup script.sh &
отречься
script &disown
Если это не то, что вам нужно, пожалуйста, будьте более конкретны в своем вопросе.
Если вы хотите, чтобы сценарий оставался после закрытия терминала, другим вариантом является использование setsid
:
setsid script.sh
Для получения дополнительной информации о различиях между nohup
, disown
, &
и setsid
: Разница между nohup, disown и &
вы можете просто переключить экран и запустить свой скрипт на этом 2-м экране.Когда скрипт запустится на 2-м, переключитесь обратно на 1-й и делайте все, что хотите. 2-й экран будет находиться в фоновом режиме как дополнительное "окно терминала". и он не прекратит обработку, даже если вы закроете свое ssh-соединение, находясь на 1-м экране.
screen --helpUse: 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 создаст новое "окно" в вашем сеансе активного экрана. Вы можете переключаться между несколькими окнами (как указано Ansgar) с помощью ctrl+a, n для следующего окна, и ctrl+a,p для предыдущего окна.
ctrl+a," выдаст вам список всех ваших открытых окон.
Больше: https://superuser.com/questions/476709/quickly-switching-between-virtual-sessions-screen
Если ваш процесс уже запущен, вы можете перевести его выполнение в фоновый режим.ctrl+z остановит процесс, и bg
продолжит процесс в фоновом режиме