przejście do zawartości
Jan Kończak
Narzędzia użytkownika
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Ostatnie zmiany
Menadżer multimediów
Indeks
Jesteś tutaj:
start
»
so
»
potoki_cwiczenia
»
solutions
so:potoki_cwiczenia:solutions
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
**Te zadania można rozwiązać na wiele sposobów. Do części zadań jest podany więcej niż jeden sposób rozwiązania.** ~~Zadanie.#~~ Wyświetl na ekranie prędkości taktowania procesorów używając pliku ''/proc/cpuinfo''. <code> grep MHz /proc/cpuinfo | cut -f2 -d ':' | tr -d ' ' grep MHz /proc/cpuinfo | cut -b 12- grep MHz /proc/cpuinfo | tr -s ': ' '\n' | grep '\.' awk '/MHz/ {print $NF}' /proc/cpuinfo </code> ~~Zadanie.#~~ Kombinacje praw dostępu w katalogu ''/etc/''. <code> ls -l | tail -n +2 | cut -b 2-10 | sort | uniq -c vdir | tail -n +2 | cut -b 2-10 | sort | uniq -c stat /etc/* | grep '(' | cut -d '(' -f 2 | cut -d '/' -f 1 | sort | uniq -c stat /etc/* | grep '(' | cut -d '(' -f 2 | cut -b 7-15 | sort | uniq -c </code> ~~Zadanie.#~~ Ośmioznakowe słowa kończące się na ''less''. <code> cut -f1 -d\/ /usr/share/myspell/en_GB.dic | grep '^....less$' cut -f1 -d\/ /usr/share/myspell/en_GB.dic | grep -P '^\w{4}less$' grep less /usr/share/myspell/en_GB.dic | tr '/' '\t' | cut -f1 | grep '^....less$' sed -n 's|^\(....less\)\(/.*\)*$|\1|p;' /usr/share/myspell/en_GB.dic perl -pe 'print "$1\n" if /^(....less)\W/; undef $_' /usr/share/myspell/en_GB.dic </code> ~~Zadanie.#~~ Słowa kończące się na ''more'' i zaczynające się z małej litery. <code> cut -f1 -d\/ /usr/share/myspell/en_GB.dic | grep 'more$' | grep '^[a-z]' </code> ~~Zadanie.#~~ Losowa 32-cyfrowa liczba szesnastkowa z ''/dev/urandom''. <code> cat /dev/urandom | tr -dc '0-9a-f' | head -c 32 cat /dev/urandom | head -c 16 | od -x | cut -s -f 2- -d ' '| tr -d ' ' </code> ~~Zadanie.#~~ Lista 10 haseł o długości 8 znaków (małe litery i podkreślnik) z ''/dev/urandom''. <code> cat /dev/urandom | tr -dc 'a-z_' | fold -w 8 | head cat /dev/urandom | tr -dc 'a-z_' | head -c 80 | fold -w 8 </code> ~~Zadanie.#~~ Ile jest uruchomionych procesów ''bash''. <code> pidof bash | wc -w pgrep '^bash$' | wc -l ps -e | grep '\bbash\b' | wc -l pgrep bash | wc -l # te polecenia policzą też procesy które ps -e | grep bash | wc -l # mają w nazwie bash, ale nie są bashem </code> ~~Zadanie.#~~ 5 najczęściej się powtarzających poleceń z historii powłoki (z argumentami). <code> sort ~/.bash_history | uniq -c | sort -n | tail -n5 history | cut -b 8- | uniq -c | sort -n | tail -n5 </code> <small> ~~Zadanie.#~~ 5 najczęściej się powtarzających nazw programów z historii poleceń powłoki, uwzględniając że w potoku uruchomionych jest kilka programów oddzielonych przez ''|''. <code> cat ~/.bash_history | tr '|' '\n' | sed 's/^\s*//' | cut -f1 -d ' ' | uniq -c | sort -n | tail -n5 cat ~/.bash_history | tr '|' '\n' | awk '{print $0}' | uniq -c | sort -n | tail -n5 </code> Uwaga: te rozwiązania nie traktują właściwie znaku ''|'' będącego częścią zamkniętego w cudzysłowy tekstu, również nie biorą pod uwagę command / process substitution. Pełne rozwiązanie wymagałoby napisania własnego leksera i parsera. </small> ~~Zadanie.#~~ 5 najpopularniejszych rozszerzeń (wszystko po pierwszej kropce) w ''/var/log/''. <code> ls -d /var/log/*.* | cut -d . -f 2- | sort | uniq -c | sort -rn | head -n5 ls /var/log | cut -s -d . -f 2- | sort | uniq -c | sort -rn | head -n5 ls /var/log | grep '\.' | cut -d . -f 2- | sort | uniq -c | sort -rn | head -n5 </code> ~~Zadanie.#~~ 5 najpopularniejszych rozszerzeń (wszystko po ostatniej kropce) w ''/var/log/''. <code> ls -d /var/log/*.* | rev | cut -d . -f 1 | rev | sort | uniq -c | sort -rn | head -n5 ls /var/log | rev | cut -s -d . -f 1 | rev | sort | uniq -c | sort -rn | head -n5 ls /var/log | grep '\.' | rev | cut -d . -f 1 | rev | sort | uniq -c | sort -rn | head -n5 </code> ~~Zadanie.#~~ Trzech użytkowników (poza rootem) z największą liczbą procesów. <code> ps --no-headers -e -o user | grep -v root | sort | uniq -c | sort -rn | head -n3 ps -e -o user | tail -n+2 | grep -v root | sort | uniq -c | sort -rn | head -n3 ps -ef | cut -f1 -d ' ' | tail -n+2 | grep -v root | sort | uniq -c | sort -rn | head -n3 </code> ~~Zadanie.#~~ Plik nagłówkowy w ''/usr/include/'' w którym jest deklaracja funkcji ''SHA512_Init''. <code> grep -lr SHA512_Init /usr/include/ grep -r SHA512_Init /usr/include/ | cut -f 1 -d ':' </code> ~~Zadanie.#~~ Ile znaków ''#'' jest w pliku ''/usr/include/openssl/sha.h''. <code> cat /usr/include/openssl/sha.h | tr -dc '#' | wc -c </code> ~~Zadanie.#~~ Wyświetl ''/usr/include/openssl/sha.h'' pomijając linie zaczynające się od ''#''. <code> grep -v '^#' /usr/include/openssl/sha.h </code> ~~Zadanie.#~~ Protokoły które mają nazwane porty w ''/etc/services''. <code> cat /etc/services | tr -s '\t ' '\t' | cut -f 2 | grep '^[0-9][0-9]*/' | cut -f 2 -d '/' | sort | uniq awk '$2 ~ /[0-9]+\// {print $2}' /etc/services | cut -f 2 -d '/' | sort | uniq awk '$2 ~ /[0-9]+\// {sub(/[0-9]+\//, "", $2); print $2}' /etc/services | sort | uniq cat /etc/services | grep -v '^#' | tr -s '\t ' '\t' | cut -sf2 | cut -sf2 -d / | sort | uniq </code> ~~Zadanie.#~~ Liczba ukrytych plików i katalogów w katalogu domowym. <code> ls -d ~/.* | wc -l ls -A ~ | grep '^\.' | wc -l </code> ~~Zadanie.#~~ Ilość wysłanych i odebranych bajtów z wyników polecenia ''ip --statistics link show br0''. <code> ip --statistics link show br0 | tail -n3 | grep -v bytes | tr -s ' ' '\t' | cut -f 2 ip --statistics link show br0 | tail -n3 | grep -v bytes | awk '{print $1}' ip --statistics link show br0 | grep bytes -A1 | grep -v bytes | awk '{print $1}' </code> ~~Zadanie.#~~ Pięć identyfikatorów procesów w systemie które mają największą ilość procesów potomnych. <code> ps -el | tail -n +2 | tr -s ' ' '\t' | cut -f 5 | sort | uniq -c | sort -nr | head -n5 | cut -b9- ps --no-headers -eo ppid | sort | uniq -c | sort -nr | head -n5 | cut -b9- </code> <small> ~~Zadanie.#~~ Znając identyfikator //PID// wyświetl nazwę programu z argumentami. <code> ps -ef | tr -s ' ' | cut -f 2,8- -d ' ' | grep '^//PID//' | cut -f2- -d' ' ps --no-headers -o cmd -p //PID// </code> </small> ~~Zadanie.#~~ Liczba użytkowników w ''/etc/passwd'' z powłoką ustawioną na ''bash''. <code> grep '/bin/bash$' /etc/passwd | wc -l </code> ~~Zadanie.#~~ Lista plików nagłówkowych wymaganych przez wszystko w ''/usr/include/infiniband/''. <code> grep -r '^[[:space:]]*#include ' /usr/include/infiniband/ | tr '<>"' '"' | cut -f 2 -d '"' | sort | uniq cat /usr/include/infiniband/* | grep '^[[:space:]]*#include ' | tr '<>"' '"' | cut -f 2 -d '"' | sort | uniq </code> ~~Zadanie.#~~ Same czasy odpowiedzi z wyników ''ping -i 0.5 -c 10 put.poznan.pl''. <code> ping -i 0.5 -c 10 put.poznan.pl | grep from | cut -d '=' -f 4 | cut -d' ' -f 1 # uruchomienie komendy ze zmieniony buforowaniem biblioteki standardowej C wypisuje wyniki na bieżąco stdbuf -oL bash -c "ping -i 0.5 -c 10 put.poznan.pl | grep from | cut -d '=' -f 4 | cut -d' ' -f 1" </code>
so/potoki_cwiczenia/solutions.txt
· ostatnio zmienione: 2023/04/21 20:59 przez
jkonczak
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Złóż / rozłóż wszystko
Do góry