Nigdy nie wiem, kiedy jest najlepszy czas na użycie nohup i & na końcu polecenia.
Nohup sprawia, że program ignoruje sygnał HUP, pozwalając mu działać po zamknięciu bieżącego terminala / wylogowaniu użytkownika. Nohup nie wysyła programu do tła.
& na końcu polecenia jest związany z kontrolą zadań powłoki, umożliwiając użytkownikowi kontynuowanie pracy w bieżącej sesji powłoki.
Zwykle nohup i & są łączone w celu uruchomienia programu, który działa po wylogowaniu użytkownika i pozwala kontynuować pracę przy bieżącej sesji powłoki.
Zazwyczaj używam, &
gdy chcę uruchomić w tle, polecenie, które nie zajmie długo, lub polecenie, w którym nie będę się przejmować, czy program zostanie zakończony, jeśli nieoczekiwanie wyloguję się z sesji.
xcalc &
rdesktop 1.2.3.4 &
./this_only_takes_a_few_seconds_but_i_want_my_shell_back.py &
Pracując przez VPN lub nieokreślone zdalne połączenie, zwykle używam nohup
do uruchamiania wszystkiego, co zajmie trochę czasu. Na przykład podczas uruchamiania importu dużych danych na zdalnym hoście, możesz chcieć użyć tego, nohup
aby mieć pewność, że rozłączenie nie spowoduje, że zaczniesz od nowa po ponownym połączeniu.
nohup ./do_data_load.py mydatafile.txt &
Jest również używany, gdy programista nie demonizuje prawidłowo usługi, więc musisz nohup
się upewnić, że nie zostanie zabita po wylogowaniu.
nohup sillyd &
Jeśli zapomnisz użyć nohup
podczas uruchamiania czegoś takiego jak dwa ostatnie przykłady, możesz użyć wbudowanego bash lub zsh, disown
aby uzyskać ten sam efekt.
$ sillyd &
[1] 12345 # Whoops!
$ disown %1
Jest to dość rzadki w użyciu nohup
bez &
, ponieważ tak naprawdę nie można ponownie podłączyć do sesji nohup'd jeśli jesteś wylogowany. To praktycznie eliminuje jego przydatność do interaktywnych poleceń. W przypadku, gdy masz interaktywne polecenie, które chcesz utrwalić podczas sesji lub uniknąć skomplikowanych rozłączeń, możesz użyć screen
. Siła ognia w pełni uzbrojonej i operacyjnej screen
sesji wykracza poza zakres tego postu, więc powinieneś sprawdzić ją bardziej szczegółowo .
byobu
która dodaje kilka fajnych funkcji do ekranu. Jest dostępny w większości apt i repozytoriach EPEL dla Red Hat.nohup: wyloguj bieżącego użytkownika, proces się nie zatrzyma
&: z tym symbolem nie będzie wyjścia w bieżącym terminalu, proces działa w tle
źródło