Zwykle zaczynam pobieranie przed pójściem do szkoły.
Jakiego polecenia powinienem użyć, aby automatycznie wykonać niezbędne zapisy i wyłączyć komputer po zakończeniu określonego zadania?
(Powiedz, po zainstalowaniu aktualizacji lub po pobraniu dużego pliku).
To zależy od podjętego zadania. Jeśli jest to narzędzie wiersza polecenia, możesz po prostu uruchomić haltlub shutdown -h now:
wget http://..../somelargefile; halt- haltzostanie wykonany powget
wget http://..../somelargefile && halt- haltzostanie wykonany, jeśli wgetnie zwróci błędów
wget http://..../somelargefile || halt- haltzostanie wykonany, jeśli wystąpią wgetbłędy zwrotu
Alternatywą jest użycie kshutdown- w tej aplikacji możesz określić, jakie działania należy wykonać (ponowne uruchomienie / zamknięcie / hibernacja / etc lub wykonanie polecenia) i kiedy (po pewnym czasie lub po wyjściu innej aplikacji). Jeśli chcesz skorzystać z tego narzędzia, musisz wybrać prawidłowy proces - niektóre narzędzia aktualizacji uruchamiają kilka podprocesów.
Możesz także dać shutdownczas na czekanie; nie ma potrzeby używania kshutdown do tego celu.
Cascabel,
1
Nie, ale shutdownnie ma możliwości oczekiwania na faktyczne wydarzenie.
Shadur
18
Każdy proces ma katalog nazwany zgodnie z jego identyfikatorem procesu (pid) w procsystemie plików. Dlatego możesz poczekać na zakończenie określonego procesu, sprawdzając, czy jego katalog istnieje wielokrotnie.
Możesz użyć tego do zamknięcia systemu po zakończeniu procesu w ten sposób (zastąp 2296 przez pid, aby czekać):
su -c 'while [[ -d /proc/2296 ]]; do sleep 1; done; poweroff'
Zalety:
Możesz zdecydować, czy zamknąć system po uruchomieniu polecenia powłoki
Wyłączenie jest wydawane jako root, polecenie czekania niekoniecznie jest wykonywane jako root (nie trzeba obejść sudopytania o późne hasło).
Niedogodności:
Może się zdarzyć, że proces zostanie zakończony, a system operacyjny ponownie użyje tego samego pid dla nowo odrodzonego procesu w ciągu tej sekundy (warunek wyścigu). W ten sposób nadal czekasz na zakończenie tego nowego procesu.
Główny punkt: Działa to nawet, jeśli proces się rozpoczął.
Heisenberg,
Jeśli uruchomiłeś coś z terminala, który wciąż masz otwarty psw tym samym terminalu, powinien pomóc Ci w wykryciu PID dla CMD. Jeśli proces był / jest w innym terminalu, przesyłanie danych wyjściowych ps dla wszystkiego poprzez grep w celu filtrowania polecenia powinno pomóc ci go znaleźćps -elf | grep <command_related_word>
TafT
Lepiej sprawdź moją odpowiedź na podstawie pgrepaka grep procesu ...
Za pomocą operatorów &&i ||można łączyć ze sobą polecenia. Na przykład:
apt-get update && sleep 2 && init 0
który wykona aktualizację systemu przy użyciu aptitude, odczekaj 2 sekundy i przejdź do poziomu 0, w zależności od systemu może to, ale nie musi, faktycznie wyłączać sprzęt.
Aby porozmawiać z jedną lub kilkoma operacjami po bardziej arbitralnej operacji, takiej jak prawdopodobnie przeglądarka internetowa, pobieranie wymaga dodatkowej logiki, aby obejrzeć pobrany plik, aby sprawdzić, czy pobieranie faktycznie się zakończyło, jednak logika powłoki nie uległa zmianie.
shutdown
czas na czekanie; nie ma potrzeby używania kshutdown do tego celu.shutdown
nie ma możliwości oczekiwania na faktyczne wydarzenie.Każdy proces ma katalog nazwany zgodnie z jego identyfikatorem procesu (pid) w
proc
systemie plików. Dlatego możesz poczekać na zakończenie określonego procesu, sprawdzając, czy jego katalog istnieje wielokrotnie.Możesz użyć tego do zamknięcia systemu po zakończeniu procesu w ten sposób (zastąp 2296 przez pid, aby czekać):
Zalety:
sudo
pytania o późne hasło).Niedogodności:
źródło
ps
w tym samym terminalu, powinien pomóc Ci w wykryciu PID dla CMD. Jeśli proces był / jest w innym terminalu, przesyłanie danych wyjściowych ps dla wszystkiego poprzez grep w celu filtrowania polecenia powinno pomóc ci go znaleźćps -elf | grep <command_related_word>
pgrep
aka grep procesu ...Za pomocą operatorów
&&
i||
można łączyć ze sobą polecenia. Na przykład:który wykona aktualizację systemu przy użyciu aptitude, odczekaj 2 sekundy i przejdź do poziomu 0, w zależności od systemu może to, ale nie musi, faktycznie wyłączać sprzęt.
Aby porozmawiać z jedną lub kilkoma operacjami po bardziej arbitralnej operacji, takiej jak prawdopodobnie przeglądarka internetowa, pobieranie wymaga dodatkowej logiki, aby obejrzeć pobrany plik, aby sprawdzić, czy pobieranie faktycznie się zakończyło, jednak logika powłoki nie uległa zmianie.
źródło
Jeśli chcesz monitorować już rozpoczęty proces, możesz to zrobić w powłoce :
źródło
Istnieje aplikacja o nazwie sentinella, która może to zrobić za pomocą GUI:
do instalacji:
źródło