Zwiększ wydajność, uruchamiając wiele poleceń jednocześnie w systemie Linux
Chcesz zwiększyć swoją produktywność? Rozważ wykonywanie wielu poleceń jednocześnie w terminalu Linux. Takie podejście pozwala wykonywać proste polecenia sekwencyjne, uruchamiać zadania w tle i zarządzać poleceniami warunkowymi zbiorczo.
W tym artykule przyjrzymy się bliżej kilku technikom wykonywania poleceń zarówno sekwencyjnie, jak i jednocześnie na terminalu Linux.
Korzyści z jednoczesnego uruchamiania wielu poleceń
Niezależnie od tego, czy wykonujesz rutynowe zadania konserwacyjne, przetwarzasz duże zbiory danych czy automatyzujesz segmenty swojego przepływu pracy, łączenie poleceń może usprawnić Twoje operacje i zwiększyć ogólną wydajność.
Na przykład, tworząc kopię zapasową wielu katalogów, możesz łączyć polecenia zamiast wykonywać każde z nich osobno, co oszczędza czas i wysiłek.
Często łączę polecenia w łańcuchy podczas instalowania pakietów Linuksa, które wymagają kilku modułów. Dzięki temu upewniam się, że pakiet i jego zależności zostaną zainstalowane w jednej akcji, eliminując powtarzające się wpisywanie.
Sekwencyjne wykonywanie poleceń
Ta metoda jest moją metodą przy korzystaniu z terminala. Możemy łączyć polecenia tak, aby były wykonywane jedno po drugim, niezależnie od tego, czy poprzednie polecenie zostało wykonane pomyślnie.
Aby wykonać te polecenia w kolejności, po prostu użyj średnika ;
jako separatora. Po naciśnięciu enter terminal przetwarza początkowe polecenie, czeka na jego zakończenie, a następnie przechodzi do następnego.
Na przykład, jeśli chcesz uaktualnić system i jednocześnie usunąć nieużywane pakiety, możesz uruchomić następujące polecenie:
Łącząc te polecenia, wymuszasz sekwencyjne wykonywanie, co gwarantuje, że każde zadanie zostanie ukończone dopiero po zakończeniu poprzedniego, utrzymując w ten sposób wydajność.
Wykonywanie poleceń na podstawie warunków
Jeśli chcesz wykonać drugie polecenie tylko wtedy, gdy pierwsze polecenie zakończy się powodzeniem (lub niepowodzeniem), możesz wykorzystać wykonywanie warunkowe za pomocą operatorów &&
(AND) i ||
(OR).
Wykonaj, jeśli pierwsze polecenie zostanie wykonane pomyślnie
Aby mieć pewność, że polecenie zostanie wykonane wyłącznie w przypadku pomyślnego wykonania poprzedniego, należy zastosować &&
operator między poleceniami.
Na przykład, jeśli chcesz utworzyć nowy katalog, a następnie przejść do niego dopiero wtedy, gdy utworzenie katalogu zakończy się pomyślnie, użyj:
Jeżeli pierwsze polecenie się nie powiedzie, kolejne polecenie nie zostanie wykonane.
Uruchom, jeśli pierwsze polecenie się nie powiedzie
Często uważam tę praktykę za korzystną podczas operacji na plikach, takich jak kopiowanie pliku do lokalizacji kopii zapasowej. Jeśli kopiowanie się nie powiedzie, chcę być o tym poinformowany bez przerywania bieżących zadań. Możesz to ustrukturyzować w następujący sposób:
cp file_name /backup || echo "Failed!" >> error_log.txt
W tym przypadku cp
polecenie próbuje skopiować wskazany plik do katalogu kopii zapasowej. Jeśli się nie powiedzie, ||
operator wykonuje następne polecenie, które dołącza komunikat o błędzie do dziennika błędów. W ten sposób Twój przepływ pracy jest kontynuowany bez zakłóceń, a jednocześnie dokumentowany jest problem do późniejszego przeglądu.
Wykonywanie poleceń w tle
Czasami możesz nie chcieć robić przerwy, aby zadanie się zakończyło. Jeśli proces zajmuje dużo czasu, możesz utrzymać płynność pracy, dodając znak ampersand &
na końcu polecenia.
Na przykład, jeśli chcesz pobrać duży plik z określonego adresu URL, a jednocześnie móc pracować nad innymi zadaniami, możesz użyć:
sudo wget https://example.com/large-file.zip &
Dzięki temu możesz kontynuować pracę na terminalu, podczas gdy pobieranie będzie się odbywać w tle.
Łączenie poleceń z wykonywaniem w tle
Co jeśli chcesz połączyć dwa polecenia, zapewniając jednocześnie, że drugie zostanie uruchomione w tle po zakończeniu pierwszego? W takim przypadku możesz użyć zarówno |
operatora potoku, jak i znaku ampersand &
.
Potok |
kieruje dane wyjściowe pierwszego polecenia jako dane wejściowe dla drugiego, natomiast znak & &
pozwala na wykonanie drugiego polecenia w tle.
Na przykład, aby odczytać duży plik i wyodrębnić słowa kluczowe oraz zapisać wyniki do nowego pliku, możesz użyć >
operatora przekierowania:
cat samplefile.txt | grep "Project" > output.txt &
Dzięki temu ustawieniu zarówno wyszukiwanie, jak i zapisywanie będą wykonywane w tle. W ten sposób możesz wykonywać inne polecenia bez przerwy, podczas gdy plik jest przetwarzany.
Uruchamianie wielu poleceń jednocześnie za pomocą Xargs
Jeśli chcesz zwiększyć swoje możliwości wielozadaniowości, rozważ wykonywanie poleceń równolegle, wykorzystując xargs
polecenie. Umożliwia to jednoczesne wykonywanie wielu poleceń zamiast obsługiwania ich sekwencyjnie.
Polecenie xargs
efektywnie dzieli listę argumentów na mniejsze partie, uruchamiając określone polecenie na każdej partii jednocześnie.
Na przykład, jeśli masz listę adresów URL zapisanych w pliku i chcesz pobrać je wszystkie naraz, zamiast robić to pojedynczo, możesz wykonać polecenie:
cat urls_file.txt | xargs -n 1 -P 4 wget
W tym przypadku -n 1
kieruje xargs
do przetworzenia jednego argumentu na polecenie i -P 4
instruuje, aby jednocześnie uruchomił cztery polecenia. Znacznie przyspiesza to proces pobierania w porównaniu z podejściem sekwencyjnym.
Wniosek
Podsumowując, można łączyć polecenia za pomocą średników ;
, implementować wykonywanie warunkowe za pomocą &&
i ||
, uruchamiać procesy w tle za pomocą &
oraz rozszerzać możliwości wykonywania wielu zadań jednocześnie dzięki wykonywaniu równoległemu za pomocą xargs
.
Źródło obrazu: Unsplash . Wszystkie modyfikacje i zrzuty ekranu autorstwa Haroon Javed.
Dodaj komentarz