Это известно как 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 &
&&от одного амперсанда&?