Что означает " & " в конце команды linux?



Я системный администратор, и меня попросили запустить скрипт linux для очистки системы.



команда такая:



perl script.pl > output.log &


Итак, эта команда заканчивается на & знак, есть ли особый смысл в этом?



у меня есть базовые знания Shell но я никогда не видел этого раньше.

711   3  

3 ответов:

The & команда выполняется в фоновом режиме.

С man bash:

Если команда завершается оператором управления & оболочка выполняет команду в фоновом режиме в подобласти. Панцирь не дожидаясь окончания команды, а статус возврата-0.

кроме того, вы можете использовать знак "&" для запуска многих процессов через одно (1) ssh-соединение, чтобы сохранить минимальное количество терминалов. Например, у меня есть один процесс, который прослушивает сообщения для извлечения файлов, второй процесс прослушивает сообщения для загрузки файлов: с помощью "&" я могу запускать обе службы в одном терминале через одно ssh-соединение с моим сервером.


*****Я только что понял, что эти процессы, проходящие через " & " будет также "остаться в живых"после закрытия ssh сессии! довольно аккуратно и полезно, если ваше соединение с сервером прерывается**

когда не сказано иначе команды берут на себя передний план. У вас есть только один "процесс" запущен в одном сеансе оболочки. Символ & указывает, что команды должны выполняться в фоновом режиме, и немедленно возвращается в командную строку для получения дополнительных команд.

sh my_script.sh &

фоновый процесс будет не остаться в живых после закрытия сеанса оболочки. запустить завершает все запущенные процессы. По умолчанию в любом случае. Если ваша команда продолжительный или работает бесконечно (т. е.: микросервис) вам нужно pr-pend его с помощью nohup, чтобы он оставался запущенным после отключения от сеанса:

nohup sh my_script.sh &

EDIT: там, кажется, есть серая область относительно закрытия фоновых процессов, когда & используется. Просто знайте, что оболочка мая закройте процесс в зависимости от вашей ОС и локальных конфигураций (особенно на CENTOS / RHEL): https://serverfault.com/a/117157.

Comments

    Ничего не найдено.