Як запустити скрипт оболонки у фоновому режимі?


Відповіді:


93

Залежно від того, що ви хочете, просто додайте & в кінець команди

script.sh &
command &

Якщо ви запускаєте його в терміналі, і хочете закрити термінал, використовуйте nohup або відключення

nohup

nohup script.sh &

відхреститися

script &
disown

Якщо це не те, про що ви хочете, будь ласка, будьте більш конкретні у своєму питанні.


Вас вітають
Пантера

Що робити, якщо мені, наприклад, потрібно запустити 2 scipts, а потім я хочу запустити, htopщоб побачити використання процесора, але проблема полягає в тому, що 1-й скрипт починає створювати вихід для консолі і, здається, запобігає іншим діям (запустіть другий сценарій, запустіть htop).
mrgloom

якщо сценарій має заяви про друк, вони будуть відображатися на моєму терміналі?
Чарлі Паркер

2

ви можете просто переключити екран і запустити свій сценарій на цьому другому екрані. Коли сценарій запустився на 2-му, перемкніть назад на 1-е і робіть все, що завгодно. 2-й екран буде у фоновому режимі як додаткове "вікно терміналу". і він не зупинить обробку, навіть коли ви закриєте ssh-з'єднання під час роботи на 1-му екрані.

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створить нове "вікно" у вашому активному сеансі екрану. Ви можете перемикатися між кількома вікнами (як зазначено в Ansgar) за допомогою ctrl+ a, nдля наступного вікна та ctrl+ a, pдля попереднього вікна.

ctrl+ a, "надасть вам список усіх відкритих вікон.

Детальніше: https://superuser.com/questions/476709/quickly-switching-bet Between-virtual-sesions-screen


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.