Widziałem mnóstwo przykładów, w których &
po końcu ciągu polecenia występuje ciąg, ale nie mogę znaleźć wyjaśnienia, co robi. To nie jest nawet w nohup
„s man
stronie. Czy to jest sprawa skorupy?
Zarówno przy użyciu, jak &
i nie, okazuje się, że jakikolwiek uruchomiony proces nohup
wydaje się wykazywać odporność na każdy sygnał zawieszenia.
&
, więc nie byłem pewien, czy&
to jakiś modyfikator lub argument, którynohup
zachowywałby się inaczej.Odpowiedzi:
Z strony podręcznika bash :
Tak, jest to powłoka i może być używana z dowolnym poleceniem. Zasadniczo zwraca kontrolę natychmiast i umożliwia wykonanie polecenia w tle. Jest to prawie zawsze używane w przypadku,
nohup
ponieważ zazwyczaj chcesz wyjść z powłoki po uruchomieniu polecenia.źródło
Użycie ampersand (&) spowoduje uruchomienie polecenia w procesie potomnym (potomkiem bieżącej sesji bash). Jednak po wyjściu z sesji wszystkie procesy potomne zostaną zabite.
użycie nohup + ampersand (&) zrobi to samo, z tą różnicą, że po zakończeniu sesji rodzic procesu potomnego zostanie zmieniony na „1”, czyli proces „init”, dzięki czemu dziecko nie zostanie zabite.
źródło
Tak, to kwestia powłoki - uruchamia polecenie w tle, więc nie musisz czekać na powrót bieżącego polecenia przed wydaniem kolejnych poleceń.
źródło