Zostaw skrypt bash uruchomiony na zdalnym terminalu, gdy nie jesteś zalogowany?

14

Mam skrypt bash, którego uruchomienie zajmuje kilka godzin. Podczas działania chciałbym robić inne rzeczy, które mogą wymagać wylogowania lub odłączenia się od Internetu (mój skrypt uruchamia testy sieciowe na różnych komputerach).

Rozumiem, że istnieje polecenie, które pozwoliłoby mi uruchomić testy ze zdalnego terminala i wylogować się z terminala podczas jego działania. Czy ktoś wie, co to za polecenie?

Ritwik Bose
źródło

Odpowiedzi:

17

Polecenie, którego szukasz, to nohup.

Jest też screen, gdy chcesz zostawić coś uruchomionego, ale wróć i ponownie podłącz interaktywnie później.

nohupjest prostszy, jeśli polecenie nie oczekuje wkładu użytkownika po uruchomieniu, i screenjest lepszy, jeśli chcesz mieć możliwość interaktywnego uruchamiania programu.

Justin Smith
źródło
Patrzyłem teraz na nohup i najwyraźniej występują problemy z wejściem i wyjściem, które mogą powodować zawieszanie się skryptu. Widziałem też coś o ekranie, co uderza mnie tak, jak wcześniej. Czy wiesz, jak korzystać z któregoś z nich?
Ritwik Bose
1
nohup jest, gdy skrypt nie oczekuje danych wejściowych od użytkownika - zapisuje wszystkie dane wyjściowe w pliku. Ekran służy do tego, gdy chcesz zostawić coś uruchomionego, ale wróć i ponownie podłącz interaktywnie później. nohup jest prostszy, jeśli polecenie nie oczekuje wkładu użytkownika po uruchomieniu, a ekran jest lepszy, jeśli chcesz mieć umiejętność interaktywnego uruchamiania programu.
Justin Smith
Ah to znalazło. Dla screena, ctrl-A d, aby odłączyć i -r + pid, aby ponownie podłączyć.
Ritwik Bose
Dobra odpowiedź. Powinieneś dodać komentarz ekranowy do swojej odpowiedzi, aby wyróżniał się bardziej.
DaveParillo
1

Używam nohupdo tego. W moim przypadku miałem skrypt python o nazwie action.py Uruchomiłem skrypt na zdalnym serwerze, a nohup python action.py & następnie zamknąłem terminal. Później, gdy zakończy działanie, możesz zobaczyć wszystkie dane wyjściowe z procesu, w nohup.outktórym zostaną utworzone w tym samym katalogu, co action.py. Jeśli plik już istnieje, zostaną do niego dołączone dalsze dane wyjściowe.

Jedyną przeszkodą jest nie wiedzieć, kiedy skrypt się skończył, więc w moim przypadku kazałem mu wysłać wiadomość e-mail po zakończeniu. Mam nadzieję, że to komuś pomogło!

Bryan J
źródło
0

Co się stanie, jeśli zapomnisz dodać nohuppolecenie na początku swojego polecenia?

Powiedzmy, że uruchomiłeś następujące długie polecenie:

Początek wyjścia długiego polecenia

Jest to nazywane, ponieważ ls -Ral /powinno zawierać listę wszystkich plików i wszystkich folderów, w tym ukrytych, z długim formatem, rekurencyjnie, zaczynając od folderu głównego. To może chwilę potrwać.

Po prostu naciśnij ctrl+ Z.

Zatrzymywanie długiego polecenia

Jak go odzyskać?

Polecenie odzyskania go z powrotem na pierwszym planie to fg.

Przywracanie polecenia


źródło