Funkcjonalności warstw architektury referencyjnej Big Data
Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.
W systemie Linux wiele obiektów jest uważanych za plik, niezależnie od tego, czy obiekt jest w rzeczywistości plikiem, urządzeniem, katalogiem lub gniazdem. Lista pliku jest łatwa, do tego jest wbudowana powłoka ls
. Ale co, jeśli użytkownik chciałby zobaczyć, które pliki są obecnie otwierane przez proces serwera WWW? A jeśli ten użytkownik chciał się dowiedzieć, które pliki są otwierane w określonym katalogu? Tam właśnie lsof
wchodzi w grę. Wyobraź sobie, lsof
jak ls
z dodatkiem „otwartych plików”.
Należy pamiętać, że chociaż BSD mają inną użyteczność do tego zadania fstat
, kilka innych odmian Uniksa (na przykład Solaris) również posiada lsof
. Opcje i flagi są różne na innych platformach, a także wygląd wyników, ale ogólnie wiedza w tym artykule powinna mieć zastosowanie również do nich.
Najpierw przyjrzyjmy się formatowi lsof
wyjścia i sposobowi jego odczytu. Zwykłe wyjście lsof
bez żadnych parametrów przypominałoby następujące. Zostało to przycięte w celu zwiększenia czytelności.
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 254,1 4096 2 /
init 1 root rtd DIR 254,1 4096 2 /
init 1 root txt REG 254,1 36992 7077928 /sbin/init
init 1 root mem REG 254,1 14768 7340043 /lib/x86_64-linux-gnu/libdl-2.13.so
init 1 root mem REG 254,1 1603600 7340040 /lib/x86_64-linux-gnu/libc-2.13.so
init 1 root mem REG 254,1 126232 7340078 /lib/x86_64-linux-gnu/libselinux.so.1
init 1 root mem REG 254,1 261184 7340083 /lib/x86_64-linux-gnu/libsepol.so.1
init 1 root mem REG 254,1 136936 7340037 /lib/x86_64-linux-gnu/ld-2.13.so
init 1 root 10u FIFO 0,14 0t0 4781 /run/initctl
Te kolumny oznaczają:
init
.init
prawie zawsze root
.cwd
- Bieżący katalog roboczy (możesz zauważyć podobieństwo do pwd
polecenia, które drukuje bieżący katalog roboczy).rtd
- Katalog główny procesu.txt
- A text file
, może to oznaczać plik konfiguracyjny związany z procesem lub „kod źródłowy” związany (lub należący do) procesu.mem
- Tak zwany „plik odwzorowany w pamięci”, który oznacza segment pamięci wirtualnej (czytaj: RAM), który został przypisany do pliku.r
- Przeczytaj.w
- Pisać.u
- Czytaj i pisz.REG
- Zwykły plik.DIR
- Katalog.FIFO
- Pierwsze wejście, pierwsze wyjście.Na razie może to być nieco przytłaczające, ale jeśli pracujesz lsof
kilka razy, szybko zapadnie się w twoim mózgu.
Jak wspomniano powyżej, wydajność lsof
skrócono tutaj. Bez żadnych argumentów ani filtrów lsof
produkuje setki wierszy wyników, co tylko spowoduje, że będziesz zdezorientowany.
Istnieją dwa podstawowe podejścia do rozwiązania tego problemu:
lsof
opcji wiersza poleceń, aby zawęzić wyniki.grep
.Podczas gdy ta ostatnia opcja może wydawać się wygodniejsza, ponieważ nie musisz zapamiętywać lsof
opcji wiersza poleceń, na ogół nie jest ona tak elastyczna i wydajna, więc pozostaniemy przy pierwszej.
Wyobraźmy sobie, że chcesz otworzyć plik w swoim ulubionym edytorze tekstów i że edytor tekstów informuje, że można go otworzyć tylko w trybie tylko do odczytu, ponieważ inny program już go otwiera. lsof
pomoże ci dowiedzieć się, kto jest sprawcą:
lsof /path/to/your/file
Spowoduje to wygenerowanie wyniku podobnego do tego:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vim 2679 root 5w REG 254,1 121525 6035622 /root/lsof.txt
Najwyraźniej zapomniałeś zamknąć starszą sesję! Bardzo podobny problem występuje, gdy próbujesz odmontować udział NFS i umount
mówi ci, że nie może, ponieważ coś nadal ma dostęp do zamontowanego folderu. Ponownie lsof
może pomóc w zidentyfikowaniu sprawcy:
lsof +D /path/to/your/directory/
Zwróć uwagę na końcowy ukośnik, to ważne. W przeciwnym razie lsof
założymy, że masz na myśli zwykły plik. Nie daj się pomylić z +
przodu flagi - lsof
ma tak wiele opcji wiersza poleceń, że potrzebuje +
oprócz bardziej powszechnych -
. Dane wyjściowe wyglądałyby tak:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mocp 5637 music 4r REG 0,19 10147719 102367344 /home/Music/RMS_GNU_SONG.ogg
Oznacza to, że proces mocp
z PID 5637
należącym do użytkownika music
otworzył plik o nazwie RMS_GNU_SONG.ogg
. Jednak nawet po zamknięciu tego procesu nadal występuje problem - woluminu NFS nie można odmontować.
lsof
ma -c
flagę wyświetlającą pliki otwierające dowolną nazwę procesu.
lsof -c mocp
To dałoby wynik wyglądający tak:
mocp 9383 music 4r REG 0,19 10147719 102367344 /home/Music/ANOTHER_RMS_GNU_SONG.ogg
W tym przykładzie jest inne wystąpienie mocp
, które uniemożliwia odmontowanie udziału. Po zamknięciu tego procesu chcesz się upewnić, że użytkownik music
nie ma otwartych innych potencjalnie problematycznych plików. lsof
ma -u
flagę pokazującą pliki otwarte przez określonego użytkownika. Pamiętaj, że plik nie zawsze jest zwykłym plikiem na dysku twardym!
lsof -u music
Możesz także przekazać kilku użytkowników oddzielonych przecinkami:
lsof -u music,moremusic
Ważna uwaga na domyślnym zachowaniem lsof
: wyniki są LUB -na, co oznacza, że będzie można zobaczyć wyniki plików otwieranych za pomocą procesów, które są własnością albo przez użytkownika music
, lub użytkownika moremusic
. Jeśli chcesz zobaczyć wyniki pasujące do procesów, które są własnością obu użytkowników, musisz przekazać flagę -a
:
lsof -au music, moremusic
Ponieważ obaj użytkownicy są w grupie musicusers
, możesz także wyświetlić listę plików na podstawie grupy:
lsof -g musicusers
Możesz także łączyć flagi wiersza poleceń:
lsof -u music,moremusic -c mocp
or
lsof -u ^music +D /home/Music
W ostatnim wierszu dodaliśmy kolejną specjalną flagę - ^
oznaczającą logiczne NOT . Jeśli dane wyjściowe są puste po uruchomieniu tego polecenia, wówczas odmontowanie najprawdopodobniej zakończy się powodzeniem.
W poprzednich przykładach najczęściej przeglądaliśmy zwykłe pliki. Co powiesz na gniazda i połączenia sieciowe?
Aby wyświetlić listę wszystkich obecnych połączeń sieciowych, lsof
ma -i
flagę:
lsof -i
Wynik wygląda podobnie do tego, co widzieliśmy do tej pory ...
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
owncloud 3509 myuser 25u IPv4 44946 0t0 TCP strix.local:34217->myserver.vultr.com:https (ESTABLISHED)
firefox 3612 myuser 82u IPv4 49663 0t0 TCP strix.local:43897->we-in-f100.1e100.net:https (ESTABLISHED)
ssh 3784 myuser 3u IPv4 10437 0t0 TCP strix.local:51416->someserver.in:ssh (ESTABLISHED)
wget 4140 myuser 3w IPv4 45586 0t0 TCP strix.local:54460->media.ccc.de:http (CLOSE_WAIT)
... z wyjątkiem jednej różnicy: zamiast nazw plików lub katalogów kolumna NAME
pokazuje teraz informacje o połączeniu. Każde połączenie składa się z następujących części:
Podobnie jak w przypadku wielu innych narzędzi, możesz zrezygnować z rozpoznawania nazw i portów DNS ( -n
i -P
odpowiednio). Flaga -i
przyjmuje dodatkowe parametry. Można określić, czy pokazać tcp
, udp
czy icmp
połączenia lub niektórych portów:
lsof -i :25
or
lsof -i :smtp
Ponownie parametry można łączyć. Poniższy przykład ...
lsof -i tcp:80
... pokaże tylko połączenia TCP przy użyciu portu 80. Możesz również połączyć to z opcjami, które znasz już z „klasycznych” plików:
lsof -a -u httpd -i tcp
Spowoduje to wyświetlenie wszystkich połączeń TCP otwartych przez użytkownika httpd
. Zwróć uwagę na -a
flagę, która zmienia domyślne zachowanie lsof
(jak wspomniano wcześniej). Podobnie jak w przypadku większości narzędzi wiersza poleceń, możesz przejść bardzo głęboko. Poniżej pokazano tylko połączenia TCP, których stan to „USTANOWIONE”:
lsof -i -s TCP:ESTABLISHED
W tym momencie powinieneś mieć podstawową wiedzę na temat tego lsof
, jak działa, a także niektóre typowe przypadki użycia. Więcej informacji można znaleźć na stronie podręcznika lsof
systemu.
Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.
Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.
13 komercyjnych narzędzi do ekstrakcji danych z Big Data
Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+
Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.
Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…
Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą
Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.
Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.
Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.