sh sys-snap.sh &
Что такое sh
? Что такое sys-snap.sh
? Почему я должен поставить &
в конце строки? Кто-нибудь может объяснить синтаксис?
Без этого &
скрипт не вернется к подсказке, пока я не нажму Ctrl+ C. С помощью &
я могу нажать Enter, и это работает.
&&
от одного амперсанда&
?Ответы:
sh
это Bourne-совместимая оболочка по умолчанию (обычно bash или dash)sys-snap.sh
скрипт оболочки, содержащий команды, которыеsh
выполняются Поскольку вы не публикуете его содержание, я могу только догадываться из его названия, что он делает. Я могу найти скрипт, связанный с CPanel, с тем же именем файла, который создает файл журнала со всеми текущими процессами, текущим использованием памяти, состоянием базы данных и т. Д. Если скрипт начинается со строки shebang (#!/bin/sh
или аналогичной), вы можете сделать его исполняемым сchmod +x sys-snap.sh
и запустить его напрямую, используя,./sys-snap.sh
если он находится в текущем каталоге.С
&
процессом запускается в фоновом режиме, так что вы можете продолжать использовать оболочку и не нужно ждать , пока сценарий не будет завершен. Если вы забудете об этом, вы можете остановить текущий запущенный процесс с помощьюCtrl-Z
и продолжить его в фоновом режиме с помощьюbg
(или на переднем плане с помощьюfg
). Для получения дополнительной информации см. Контроль работыисточник
sh
обычно толькоbash
илиdash
в системах на основе Linux (или в последних OS / X). На BSD это обычно другой вариант Ash (dash основан на NetBSD sh, сам по себе основанный на Almquist Shell) или производная pdksh. На коммерческих Unices это вообще ksh88.&
и, следовательно, в фоновом режиме, вы получаете только новое приглашение оболочки.&&
от одного амперсанда&
?Это известно как
job control
под Unix.&
Информирует скорлупу поставить команду в фоновом режиме. Это означает, что он продолжает выполнятьsys-snap.sh
команду, но возвращает вас в вашу оболочку, чтобы вы могли продолжать выполнять параллельные команды.Вы можете увидеть список заданий, которые в данный момент выполняются с помощью
jobs
команды. Вы можете вернуться к команде (вывести на передний план) с помощьюfg
команды. Который тянет команду обратно в состояние, в котором вы не видите подсказки и вам нужно выдать команду Ctrl- Cчтобы убить процесс. Однако вы можете приостановить (приостановить) этот процесс, выдав Ctrl- Z. Это приостановитsys-snap.sh
и вернет вас к вашему приглашению. Вы можете затем фон это (как будто вы издавали его с&
) сbg
командой, и он будет возобновить работы от его состояния паузы в Ctrl- Zпоставил его.Обратите внимание, что вы можете иметь более одной работы одновременно (как показано
jobs
):Вы можете фон и их передний план, используя их номер работы,
%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- Ctosys-snap.sh
.Если вы используете оболочку bash,
man bash
команда имеет подробный раздел под разделом «УПРАВЛЕНИЕ ЗАДАНИЯМИ», в котором более подробно.Что касается имени
sys-snap.sh
, в Unix имена файлов являются произвольными (с парой исключений, таких как файлы динамического загрузчика). Для них не требуется наличие определенных расширений файлов, чтобы они запускались как сценарий оболочки, вызывали другие команды, такие какperl
иphp
т. Д. Обычно это используется для ясности, что в данном случае это.sh
сценарий оболочки, использующий оболочку Борна/bin/sh
,Функциональная часть
sys-snap.sh
(когда вы смотрите на ее содержимое с помощьюless
команды) - это Шебанг . В первой строке вы, вероятно, найдете одно из:или похожие. В общих чертах, команда a после
#!
(например,/bin/sh
) выполняется, и содержимое остальной части файла сценария передается ей по очереди. Обратите внимание, что для файла также должен быть установлен исполняемый файл,chmod
чтобы вы могли запускать его как команду. Если разрешения не были установлены, то это неshebang
имеет никакого эффекта, потому что вы либо получите ошибку:или если вы запустили его по явному пути
./sys-snap.sh
(.
имеется в виду текущий рабочий каталог), вы получите:Другой вариант - оставить его без прав на выполнение и явно попросить / bin / sh запустить его:
источник
nohup
, что делает, поскольку оно часто используется вместе с тем,&
чтобы запускать процесс и иметь возможность убить оболочку, которая его запустила, не убивая процесс.jobs
всегда будет пустым, если это первая команда?&
в конце команды только отсоединенияstdin
(но неstdout
илиstderr
), что подразумевает, что если ваша команда / сценарий выполняется в фоновом режиме, но выполняется записьstdout
, вы можете столкнуться с ситуацией, когдаCtrl + c
вы не остановите вывод, но вы сможете вводить команды. Это потому, что фоновый процесс пишет,stdout
но вы не можете остановить его, потому что он не работает на переднем плане. Больше информации здесь .sh
это оболочка Какая оболочка точно зависит от системы. Пример для системы, которая использует вbash
качестве стандартной оболочки:sys-snap.sh
будет какой-то сценарий оболочки, поэтомуsh sys-snap.sh
выполнит сценарий оболочки.&
заставит процесс оболочки работать в фоновом режиме. Без&
этого останется на переднем плане, пока не закончится сценарий. Сценарий будет работать в любом случае, это просто вопрос ожидания завершения сценария или нет, прежде чем выполнять дальнейшие команды.источник
Ваш сервер в hostgator?
Этот сценарий
sys-snap.sh
представляет собой специальный сценарий, написанный командой hostgator для сбора всех файлов журнала и данных для системы, поэтому они используют его выходные данные для мониторинга и сбора системной информации.источник