Android

Polecenie nohup dla systemu Linux

Using nohup to allows jobs to continue on logout

Using nohup to allows jobs to continue on logout

Spisu treści:

Anonim

Komenda nohup wykonuje inny program określony jako argument i ignoruje wszystkie sygnały SIGHUP (rozłączenia). SIGHUP to sygnał wysyłany do procesu, gdy jego terminal sterujący jest zamknięty.

Zwykle po uruchomieniu programu przez SSH, jeśli połączenie zostanie zerwane lub wylogujesz się, sesja zostanie zakończona, a wszystkie procesy wykonane z terminala zostaną zatrzymane. Tutaj przydaje się polecenie nohup . Ignoruje wszystkie sygnały zawieszenia, a proces będzie kontynuowany.

Jak korzystać z polecenia nohup

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

nohup COMMAND

Polecenie nie akceptuje żadnych innych opcji oprócz standardowego --help i --version .

Rzućmy okiem 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 dane wyjściowe polecenia do pliku nohup.out . Ten plik jest tworzony w bieżącym katalogu roboczym. Jeśli użytkownik uruchamiający polecenie nie ma uprawnień do zapisu w katalogu roboczym, plik zostanie utworzony w katalogu osobistym użytkownika.

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

Uruchamianie polecenia w tle

Używanie nohup na pierwszym planie nie jest bardzo przydatne, ponieważ nie będziesz mógł wchodzić w interakcje z powłoką, dopóki polecenie się nie zakończy.

Aby uruchomić polecenie w tle, dodaj symbol & na końcu polecenia:

nohup mycommand &

Dane wyjściowe obejmują identyfikator zadania powłoki (otoczony nawiasami) i identyfikator procesu:

25177

Możesz użyć identyfikatora zadania, aby przenieść polecenie na pierwszy plan, używając polecenia fg .

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

kill -9 25132

Przekierowanie danych wyjściowych do pliku

Domyślnie nohup przekierowuje dane wyjściowe polecenia do pliku nohup.out . Jeśli chcesz przekierować dane wyjściowe do innego pliku, użyj standardowego przekierowania powłoki.

Na przykład, aby przekierować standardowe wyjście i standardowy błąd do mycommand.out , mycommand.out :

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żna użyć, aby uniknąć przerwania polecenia po zamknięciu terminala lub rozłączeniu.

Ekran

Screen lub GNU Screen to program multipleksera terminali, który pozwala na rozpoczęcie sesji ekranu i otwarcie dowolnej liczby okien (terminali wirtualnych) w tej sesji. Procesy uruchomione w Screen będą kontynuowane, gdy ich okno nie będzie widoczne, nawet jeśli zostaniesz rozłączony.

Tmux

Tmux to nowoczesna alternatywa dla ekranu GNU. Dzięki Tmux możesz także utworzyć sesję i otworzyć wiele okien w 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.

Zapierać się

disown to wbudowana powłoka, która usuwa zadanie powłoki z kontroli zadania powłoki. W przeciwieństwie do nohup , możesz także używać disown przy uruchomionych procesach.

Wniosek

nohup pozwala zapobiegać kończeniu poleceń po wylogowaniu lub zamknięciu terminala.

terminal nohup