Potok Unix łączy deskryptory plików dwóch procesów. Potok jest tworzony za pomocą funkcji potoku POSIX zadeklarowanej w <unistd.h>. Powłoki umożliwiają tworzenie potoków między procesami za pomocą „|”.
Kiedy użyłem potoku w bashu, nie myślałem o tym więcej. Ale kiedy czytam przykład kodu C za pomocą wywołania systemowego pipe () razem z fork (), zastanawiam się, jak rozumieć potoki, w tym potoki anonimowe i potoki nazwane. Często słyszy się, że „wszystko w systemie Linux / Unix jest plikiem”. …
Miałem pomysł, aby szybko przeprowadzić testy porównawcze niektórych programów dekompresyjnych. Np. Dla gz uruchomiłbym polecenie: timeout 10 zcat foo.gz | wc -c Który mierzyłby ilość danych, które dekompresor mógłby wyodrębnić w ciągu 10 sekund. Jedynym problemem jest to, że nie działa: ponieważ Zcat jest zabijany, wc również jest zabijany, więc …
Szukam czegoś, co, jak podejrzewam, nie istnieje: nieblokowana buforowana nazwana potok (fifo) do użytku z wiersza poleceń. Czy jest coś takiego? Oto przypadek użycia: Załóżmy, że mam proces, który będzie działał przez długi czas w tle i wyrzuci wiele wyników stdout. Tak naprawdę nie dbam o wynik i nie chcę …
Biorąc pod uwagę ten minimalny przykład ( echo "LINE 1" ; sleep 1 ; echo "LINE 2" ; ) wyprowadza LINE 1, a następnie po upływie jednej sekundy, wyjścia LINE 2, jak oczekiwano . Jeśli to potokujemy grep LINE ( echo "LINE 1" ; sleep 1 ; echo "LINE 2" …
Mam skrypt bash, który działa, dopóki maszyna Linux jest włączona. Zaczynam tak, jak pokazano poniżej: ( /mnt/apps/start.sh 2>&1 | tee /tmp/nginx/debug_log.log ) & Po tym, jak się śmieje, widzę polecenie tee na moim wyjściu ps, jak pokazano poniżej: $ ps | grep tee 418 root 0:02 tee /tmp/nginx/debug_log.log 3557 root …
Znam dwa typy łączenia poleceń: za pomocą potoku (wstawianie wyjścia std do wejścia std następnego polecenia). za pomocą trójnika (podziel wyjście na wiele wyników). Nie wiem, czy to wszystko, co jest możliwe, więc rysuję hipotetyczny typ połączenia: Jak można wdrożyć cykliczny przepływ danych między poleceniami, na przykład w tym pseudokodzie, …
Utknąłem z dziwnym zachowaniem readarraydowodzenia. Te man bashstany: readarray Read lines from the standard input into the indexed array variable array ale te skrypty nie działają (tablica jest pusta): unset arr; (echo a; echo b; echo c) | readarray arr; echo ${#arr[@]} unset arr; cat /etc/passwd | readarray arr; echo …
Napisałem dzisiaj mały skrypt, który zawierał grep -q ^local0 /etc/syslog.conf Podczas przeglądu współpracownik zasugerował, aby ^local0go zacytować, ponieważ ^oznacza „fajkę” w powłoce Bourne'a. Zaskoczony tym twierdzeniem, próbowałem wyśledzić wszelkie odniesienia, które o tym wspominały. Nic, co znalazłem w Internecie, nie sugerowało, że to był problem. Okazuje się jednak, że implementacja …
Zastanawiam się, kiedy powinniśmy korzystać z rurociągów, a kiedy nie. Powiedzmy na przykład, aby zabić pewien proces, który obsługuje pliki pdf, następujące działania nie będą działać przy użyciu potoku: ps aux | grep pdf | awk '{print $2}'|kill Zamiast tego możemy to zrobić tylko na następujące sposoby: kill $(ps aux| …
Do tej pory Nagroda za Bezużyteczne Wykorzystaniecat jest bardzo dobrze znana, jest też wzmianka o Bezużytecznym Wykorzystaniuecho (nie dotyczy tego pytania). Zastanawiam się, czy powinna istnieć „ echoNagroda za bezużyteczne wykorzystanie w Bash”: Według niektórych nienaukowych pomiarów orurowanie wydaje się być znacznie wolniejsze niż heredoki i tustringi: Heredocs: for reps …
Mam archiwum tar jednego obrazu dysku. Obraz w tym pliku tar ma rozmiar około 4 GB. Przesyłam dane wyjściowe do tar xfw ddcelu zapisania obrazu dysku na karcie SD. Zrzut dysku nigdy się nie zatrzymuje, dopóki karta nie jest pełna. Oto moja sesja powłoki: $ ls -l disk.img.tgz -rw-r--r-- 1 …
W bash: $ echo hi 2>&1 1>/dev/null | cat $ Podczas pobytu w Zsh: $ echo hi 2>&1 1>/dev/null | cat hi $ Czy można przekierować tylko standardowy błąd podczas przekierowywania standardowego?
Mam kilka zdefiniowanych w ten sposób funkcji: function f { read and process $1 ... echo $result } Chcę skomponować je razem, aby wyglądało na to wywołanie f | g | h. Jakiego idiomu używam do konwersji funkcji działającej na argumentach na jeden odczyt argumentów ze standardowego wejścia? Czy możliwe …
Zastanawiałem się, czy wgetmożna było pobrać RPM, a następnie przepuścić przez sudo rpm -iinstalację, w jednej linii? Zdaję sobie sprawę, że mogę po prostu biegać: wget -c <URL> sudo rpm -i <PACKAGE-NAME>.rpm aby zainstalować pakiet, ale zastanawiałem się, czy można to zrobić w jednym wierszu, używając opcji quiet i zapisując …
Mam skrypt, który wyświetla tekst na adres stdout. Chcę zobaczyć wszystkie te dane wyjściowe w moim terminalu, a jednocześnie chcę przefiltrować niektóre wiersze i zapisać je w pliku. Przykład: $ myscript Line A Line B Line C $ myscript | grep -P 'A|C' > out.file $ cat out.file Line A …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.