Как запустить сценарий оболочки в фоновом режиме?

Как я могу запустить сценарий оболочки в фоновом режиме?

В зависимости от того, чего вы хотите, просто добавьте & в конец команды

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 продолжит процесс в фоновом режиме