2012-11-12 11 views
40

Jestem administratorem systemu i poproszono mnie o uruchomienie skryptu linuxowego w celu oczyszczenia systemu.Co oznacza "i" na końcu polecenia linux?

Polecenie to:

perl script.pl > output.log & 

więc to polecenie kończy z & znak, czy istnieje szczególne znaczenie z tego?

mam podstawową wiedzę o powłoce ale nigdy nie widziałem tego wcześniej.

+0

Flag for UNIX se –

+0

pierwszy krok "man bash". –

+0

Przepraszam, mój zły, wiedziałem o takich podstawowych rzeczach – Dude

Odpowiedz

73

& robi bieganie polecenia w tle.

Od man bash:

Jeżeli polecenie jest zakończone przez operatora sterującego &, powłoka wykonuje polecenie w tle w podpowłoce. Powłoka ma nie czekać na polecenie Zakończ, a zwracany jest 0.

8

Ponadto, można użyć „&” znak do uruchomienia wielu procesów przez jeden (1) połączeń ssh w celu aby zachować minimalną liczbę terminali. Na przykład, mam jeden proces, który nasłuchuje wiadomości w celu wyodrębnienia plików, drugi proces nasłuchuje wiadomości w celu przesłania plików: Za pomocą "&" mogę uruchomić obie usługi w jednym terminalu, poprzez pojedyncze połączenie ssh z moim serwerem .


***** zdałem sobie sprawę, że te procesy uruchomione przez „&” będzie także „żyć” po sesji ssh jest zamknięta! całkiem miłe i pożyteczne, jeśli połączenie z serwerem zostanie przerwane **

+0

'nohup' zachowa procesy również żywe. –

2

Kiedy nie powiedziano inaczej polecenia przejąć planie. W pojedynczej sesji powłoki działa tylko jeden proces "pierwszego planu". Symbol & instruuje polecenia do uruchomienia w procesie w tle i natychmiast powraca do wiersza poleceń w celu uzyskania dodatkowych poleceń.

sh my_script.sh & 

Proces tło będzie nie żyć po sesji skorupa jest zamknięta. SIGHUP kończy wszystkie uruchomione procesy. Domyślnie i tak. Jeśli komenda jest długotrwały lub biegnie w nieskończoność (tj microservice) trzeba PR-Pend go wraz z nohup więc pozostaje uruchomiony po odłączeniu od sesji:

nohup sh my_script.sh & 

EDIT: Nie wydaje się, aby być szarym obszarem dotyczącym zamykania procesów działających w tle po użyciu &. Wystarczy mieć świadomość, że skorupa może zamknąć proces w zależności od systemu operacyjnego i konfiguracji lokalnych (szczególnie na CentOS/RHEL): https://serverfault.com/a/117157.