Linux nohup polecenie

nohup polecenie wykonuje inny program podany jako jego argument i ignoruje wszystkie sygnały SIGHUP (hangup). SIGHUP jest sygnałem, który jest wysyłany do procesu, gdy jego terminal sterujący jest zamknięty.

zazwyczaj, gdy uruchamiasz program przez SSH, jeśli Twoje połączenie zostanie przerwane lub wylogujesz się, sesja zostanie zakończona, a wszystkie procesy wykonywane z terminala zostaną zatrzymane. W tym miejscu przydaje się polecenie nohup., Ignoruje wszystkie sygnały zawieszenia, a proces będzie nadal działać.

jak używać polecenia nohup #

składnia polecenia nohup jest następująca:

nohup COMMAND 

polecenie nie akceptuje żadnych innych opcji poza standardowym --help I --version.,

spójrzmy na następujący przykład:

nohup mycommand
nohup: ignoring input and appending output to 'nohup.out'

nohup uruchamia polecenie mycommand na pierwszym planie i przekierowuje wyjście polecenia Do plik nohup.out. Ten plik jest tworzony w bieżącym katalogu roboczym . Jeśli użytkownik uruchamiający polecenie nie ma uprawnień do zapisu do katalogu roboczego, plik jest tworzony w katalogu domowym użytkownika.

Jeśli wylogujesz się lub zamkniesz terminal, proces nie zostanie zakończony.,

uruchamianie polecenia w tle #

używanienohup na pierwszym planie nie jest zbyt użyteczne, ponieważ nie będzie można wchodzić w interakcje z powłoką, dopóki polecenie nie zostanie ukończone.

aby uruchomić polecenie w tle , Dodaj & symbol na końcu polecenia:

nohup mycommand &

wyjście zawiera identyfikator zadania powłoki (otoczony nawiasami) i identyfikator procesu:

 25177

można użyć ID zadania, aby przenieść polecenie na pierwszy plan za pomocą polecenia fg.,

Jeśli z jakiegoś powodu chcesz zakończyć proces, użyj polecenia kill, a następnie polecenia id:

kill -9 25132

przekierowanie wyjścia do pliku #

domyślnie nohup przekierowanie wyjścia polecenia Do plik nohup.out. Jeśli chcesz przekierować wyjście do innego pliku, użyj standardowego przekierowania powłoki.,

na przykład, aby przekierować standardowe wyjście i standardowy błąd do mycommand.out należy użyć:

nohup mycommand > mycommand.out 2>&1 &

aby przekierować standardowe wyjście i standardowy błąd do różnych plików:

nohup mycommand > mycommand.out 2> mycommand.err &

alternatywy #

istnieje kilka alternatywnych programów, których możesz użyć, aby uniknąć zakończenia polecenia po zamknięciu terminala lub rozłączeniu.,

Screen #

Screen lub GNU Screen to program do multipleksowania terminali, który pozwala na rozpoczęcie sesji screen i otwarcie dowolnej liczby okien (wirtualnych terminali) wewnątrz tej sesji. Procesy uruchomione na ekranie będą nadal działać, gdy ich okno nie będzie widoczne, nawet jeśli zostaniesz rozłączony.

Tmux #

Tmux jest nowoczesną alternatywą dla ekranu GNU. Dzięki Tmux możesz również utworzyć sesję i otworzyć wiele okien wewnątrz tej sesji. Sesje Tmux są trwałe, co oznacza, że programy działające w tmux będą nadal działać, nawet jeśli zamkniesz terminal.,

Disown #

disown jest wbudowaną powłoką, która usuwa zadanie powłoki z kontrolki zadań powłoki. W przeciwieństwie do nohup, możesz używaćdisown również na uruchomionych procesach.

wniosek #

nohup pozwala zapobiec zakończeniu poleceń po wylogowaniu się lub wyjściu z terminala.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *