Pobieram plik za pomocą wget i chcę wyłączyć komputer po zakończeniu pobierania, ale muszę gdzieś teraz iść :) Czy możliwe jest wykonanie polecenia bash dokładnie, kiedy proces się zakończy?
Wiem, że to działa:
wget http://example.com/plik.rar; zamknij teraz
Ale co jeśli piszę tylko:
wget http://example.com/plik.rar
Odpowiedzi:
Możesz zrobić coś takiego:
wait będzie czekać na wszystkie programy uruchomione w tle z bieżącej powłoki - tj. tego wgeta.
Po zakończeniu oczekiwania nastąpi zamknięcie.
źródło
W innej powłoce użyj
aby znaleźć PID polecenia, na które chcesz czekać
aby zamknięcie nie uruchomiło się, dopóki proces się nie zakończy. Zobacz także odpowiedź depesz .
źródło
wait
będzie działać tylko dla poleceń uruchamianych z tej samej powłokiMoje rozwiązania są następujące: zawieszenie długotrwałego zadania za pomocą Control + Z, a następnie wpisz coś takiego:
Jeśli chcesz uruchomić, reaguj inaczej w zależności od powodzenia lub niepowodzenia polecenia, użyj && i || jako operatorzy zwarć.
EDYCJA: To nie będzie działać z sudo, ponieważ poprosi o twoje hasło. W związku z tym usunąłem przykłady za pomocą sudo. Jeśli potrzebujesz sudo do drugiego zadania, skorzystaj z innej metody zamieszczonej tutaj.
Z drugiej strony uważam, że zarówno GNOME, jak i KDE oferują sposoby na uruchomienie zamykania / restartowania bez użycia sudo, wysyłając odpowiedni sygnał D-Bus lub coś takiego.
źródło
fg
..., alesudo
może być problem, jeśli wyświetli się monit o hasłoTak, po prostu wpisz drugie polecenie i naciśnij klawisz Enter. Jeśli bieżący program przewija tekst, nie widzisz, co wpisujesz poprawnie, więc uważaj na klawisze, aby zrobić to dobrze.
Mądrzejszym sposobem jest przejście do innego TTY (CTRL + ALT + F1 do F6) i uruchomienie polecenia jednocześnie, lub jeśli używasz programu wiersza polecenia, takiego jak screen, możesz utworzyć w nim nowe okno.
źródło
Jeśli chcesz się podobać, sprawdź status zwrotu widgetu i wyłącz go tylko wtedy, gdy się powiedzie.
źródło
wget
uruchomień nie pojawia się monit o zbudowanie testu.