Это известно как job control
под Unix. &
Информирует скорлупу поставить команду в фоновом режиме. Это означает, что он продолжает выполнять sys-snap.sh
команду, но возвращает вас в вашу оболочку, чтобы вы могли продолжать выполнять параллельные команды.
Вы можете увидеть список заданий, которые в данный момент выполняются с помощью jobs
команды. Вы можете вернуться к команде (вывести на передний план) с помощью fg
команды. Который тянет команду обратно в состояние, в котором вы не видите подсказки и вам нужно выдать команду Ctrl- Cчтобы убить процесс. Однако вы можете приостановить (приостановить) этот процесс, выдав Ctrl- Z. Это приостановит sys-snap.sh
и вернет вас к вашему приглашению. Вы можете затем фон это (как будто вы издавали его с&
) с bg
командой, и он будет возобновить работы от его состояния паузы в Ctrl- Zпоставил его.
Обратите внимание, что вы можете иметь более одной работы одновременно (как показано jobs
):
[1]- Running sys-snap.sh &
[2]+ Running another-script.sh &
Вы можете фон и их передний план, используя их номер работы, %1
будет sys-snap.sh
и %2
будет another-script.sh
. Если вы используете аргументы fg
или bg
не используете их, она будет выполнять команду для задания, помеченного +
в jobs
выходных данных выше.
fg %1
поставит sys-snap.sh
обратно на первый план, в то время оставляя another-script.sh
на заднем плане.
Вы можете выполнить последовательность Ctrl- Cдля запущенных заданий без необходимости выделять их перед kill
командой с помощью команды, kill %1
отправит эквивалент Ctrl- Cto sys-snap.sh
.
Если вы используете оболочку bash, man bash
команда имеет подробный раздел под разделом «УПРАВЛЕНИЕ ЗАДАНИЯМИ», в котором более подробно.
Что касается имени sys-snap.sh
, в Unix имена файлов являются произвольными (с парой исключений, таких как файлы динамического загрузчика). Для них не требуется наличие определенных расширений файлов, чтобы они запускались как сценарий оболочки, вызывали другие команды, такие как perl
и php
т. Д. Обычно это используется для ясности, что в данном случае это .sh
сценарий оболочки, использующий оболочку Борна /bin/sh
,
Функциональная часть sys-snap.sh
(когда вы смотрите на ее содержимое с помощью less
команды) - это Шебанг . В первой строке вы, вероятно, найдете одно из:
#! /bin/sh
#! /bin/bash
#! /usr/local/bin/bash
или похожие. В общих чертах, команда a после #!
(например, /bin/sh
) выполняется, и содержимое остальной части файла сценария передается ей по очереди. Обратите внимание, что для файла также должен быть установлен исполняемый файл, chmod
чтобы вы могли запускать его как команду. Если разрешения не были установлены, то это не shebang
имеет никакого эффекта, потому что вы либо получите ошибку:
bash: sys-snap.sh: command not found
или если вы запустили его по явному пути ./sys-snap.sh
( .
имеется в виду текущий рабочий каталог), вы получите:
bash: ./sys-snap.sh: Permission denied
Другой вариант - оставить его без прав на выполнение и явно попросить / bin / sh запустить его:
/bin/sh sys-snap.sh &
&&
от одного амперсанда&
?