Przejdź do głównej zawartości

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)



1. Co to jest Linux ?

Linux jest to system operacyjny, który stworzył Linus Torvalds. Wzorowany na systemach UNIX jest re-implementacją jego jądra. Linux zawiera wiele udoskonaleń technicznych jakich nie ma w UNIX, co sprawia, iż jest to coś więcej niż tylko klon systemu. Na system składają się:

  1. Jądro (kernel). 
  2. Biblioteki systemowe.
  3. Wbudowane narzędzia. 
Środowiska te mogą być uruchamiane na różnych platformach sprzętowych produkowanych przez różnych producentów. Pierwsza wersja jądra systemowego Linux została udostępniona 17 września 1991 roku. Sam termin "LINUX" pomimo potocznego użycia go w rozumieniu systemu operacyjnego jest raczej bliższy określeniu samego jądra systemowego, które w połączeniu z pozostałymi elementami składa się na w pełni na system operacyjny. 

2. Czym Linux różni się od UNIX ?

UNIX to system operacyjny napisany w 1969 r. w Bell Labs przez Dennisa Ritchie i Kena Thompsona. Pierwsza wersja napisana w języku C wyznaczyła standard wyboru języka programowania dla tworzenia innych systemów operacyjnych. Sama nazwa UNIX jest chroniona prawami autorskimi przez co jedynie duże firmy mają prawo używać tych praw i nazwy. Linux jest tworem wzorowanym na UNIX co zapisane zostało nawet w README jądra : 

"Linux is a Unix clone written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net. It aims towards POSIX compliance."

twórcą Linux jest Linus Torvalds którego kod oddany w ręce społeczności doczekał się dziś wielu wersji i odmian. Linux stał się alternatywą dla komercyjnych wersji UNIX takich jak Solaris, HP-UX, AIX.

3. Co to jest BASH?

Skrót BASH pochodzi od "Bourne Again SHell". Twórcą tego rozwiązania jest Steve Bourne. Jest to powłoka systemowa będąca następcą wcześniejszego shell'a. (/bin/sh). Bash umożliwia prace w trybie konwersacyjnym i wsadowym. Możliwe jest definiowanie aliasów oraz funkcji, zawiera konstrukcje sterujące przepływem (if, while, for). 

4. Co to jest jądro Linuxa ( Linux kernel) ?

Najważniejsza część systemów operacyjnych z rodziny Linux / Unix. Pierwsze wydanie miało miejsce w 26 sierpnia 1991 roku. Jest to oprogramowanie systemowe niskiego poziomu. Jądro linux odpowiada za komunikacje ze sprzętem oraz wykonywanie operacji na pamięci operacyjnej. Służy za pośrednika (warstwa jądra) pomiędzy użytkownikiem (warstwa użytkownika), który uruchamia swoje programy a fizycznymi urządzeniami wchodzącymi w skład danej maszyny. 

5. Co to jest LILO?

Botloader dla systemu Linux, służy do załadowania systemu Linux do pamięci operacyjnej. Program rozruchowy. Obecnie rolę LILO zastępuje GRUB. 

6. Co to jest GRUB ?

Program rozruchowy , bootloader rozwijany w ramach projektu GNU. Służy do uruchomienie wielu systemów operacyjnych zainstalowanych na komputerze lub dostępnych z sieci. Umożliwia załadowanie jądra systemu operacyjnego. Obsługuje zabezpieczenia hasłem do którego obliczana jest suma MD5. 

7. Co to jest SWAP ?

Partycja wymiany. Przestrzeń dyskowa zarezerwowana na potrzeby tymczasowego przechowywania danych w momencie gdy zostają przekroczone dostępne zasoby pamięci RAM. Zazwyczaj rozmiar SWAP stanowi podwojoną wartość pamięci RAM. 

8. Co jest zaletą Open Source ?

Licencja Open Source zakłada możliwość rozpowszechniania oprogramowania wraz z kodem źródłowym bezpłatnie dla wszystkich którzy są nim zainteresowani. Daje to możliwość współpracy nad danym kodem przez wielu użytkowników, którzy zgrupują się nad danym projektem. Prowadzi to do społecznej pracy na rzecz danego kodu przez wiele osób co znacznie przyspiesza eliminowanie błędów oraz skraca czas potrzebny na rozwój danego kodu.

 9. Jakie są podstawowe składniki systemu Linux?

Linux tak jak w przypadku innych systemów operacyjnych składa się z takich elementów jak: 
  • jądro systemu 
  • powłoka systemowa 
  • Interfejs graficzny 
  • narzędzia systemowe
10. Czy warto instalować w systemie Linux wiele interfejsów użytkownika (GUI) ?

Zasadniczo w większości przypadków wystarcza jedno zazwyczaj KDE lub GNOME ale mogą zdarzyć się sytuację iż jakiś program będzie działał tylko i wyłącznie na jednym z nich i jeżeli nie jest to akurat aktualnie główne środowisko wtedy zajdzie konieczność instalacji dodatkowego GUI. 

11. Jakie są podstawowe różnice pomiędzy BASH a DOS ?

Podstawowe różnice można dostrzec w trzech obszarach: 

  1. W przypadku BASH wielkość liter ma znaczenie w przypadku DOS nie ma to znaczenia
  2. W przypadku BASH znak "/" jest separatorem katalogu w DOS znak ten jest separatorem polecenia. Natomiast znak "\"w DOS to separator katalogu w BASH znak ucieczki.
  3. W przypadku DOS konwencją nazewnictwa plików jest nazwa_pliku i trzy znakowe rozszerzenie w BASH nie ma takiej konwencji.  
12. Co to jest konto root ?

Konto root jest kontem o uprzywilejowanych najwyższych uprawnieniach w systemie. Jest kontem nadrzędnym służącym do zarządzania innymi kontami oraz do konfiguracji systemu operacyjnego. Z jego poziomu konfigurowane są wszystkie parametry systemu, jakie nie są dostępne dla kont zwykłych użytkowników. 

13.   Co to jest CLI ?

Skrót CLI rozwijany jest jako Command Line Interface. Interfejs ten umożliwia użytkownikowi wpisywanie deklaratywnych poleceń jakie mają zostać zadane do wykonania. Interfejs wiersza poleceń.

14. Co to jest GUI?

Skrót GUI pochodzi od Graphical User Interface. Jest to graficzny interfejs użytkownika.Komunikacja między użytkownikiem a systemem odbywa się przy użyciu kliknięć w ikony, lub zdefiniowane skróty. Interfejs taki zapewnia graficzne odwzorowanie komend wpisywanych w CLI dzięki czemu nie ma potrzeby pamiętania ich składni. Programy działające w trybie graficznym również oferują swój interfejs w postaci okien oraz klikalnych menu. W systemach Linux popularne GUI to KDE, Gnome, Cinamon i wiele innych. 

15. Jak sprawdzić zużycie pamięci RAM w systemie Linux ?

Można po prostu odczytać plik :  cat /proc/meminfo, lepiej jednaj skorzystać z jednego z narzędzi do sprawdzania aktualnego stanu pamięci jak :

  1. free -m 
  2. vmstat
  3. top 
  4. htop 

16. Co to jest link symboliczny ?

Link symboliczny jest dowiązaniem działającym tak jak skróty w środowiskach GUI. W miejscu gdzie zostały utworzone mogą zostać wywołane po swojej nazwie jednak wskazywać będą na pełną ścieżkę do jakiej zostały dowiązane.

17. Jaka jest różnica pomiędzy linkiem twardym a miękkim ( hard-link vs soft-link) ?

Link symboliczny lub inaczej miękki jest rzeczywistym łączem do oryginalnego pliku, natomiast link twardy jest faktyczną kopią pliku oryginalnego z punktu widzenie systemu plików na jakim się znajduje. W przypadku linku twardego usunięcie oryginału pliku nie powoduje usunięcia linku ani jego zawartości. W przypadku linku miękkiego po usunięciu oryginału link przestanie działać.

18. W jaki sposób można odwołać się do równoległego portu urządzenia takiego jak drukarki?

W systemie windows port taki określany jest jako port LPT w systemach Linux odwołanie takie jest możliwe przez użycie /dev/lp0 , /dev/lp1 itd.

19. W jaki sposób w systemie Linux oznaczane są zasoby dyskowe ? 

Zasoby dyskowe w systemie Linux oznaczane są w postaci :

Stacje dyskietek : /dev/fd0 , /dev/fd1 itd...
Dyski IDE : /dev/hda , /dev/hda itd...

20. Co to jest /dev/shm w systemach Linux ?

Jest to implementacja tradycyjnej koncepcji pamięci współdzielonej. Jest to skuteczny sposób przekazywania danych między programami. Jeden program tworzy część pamięci, do której mają dostęp inne procesy (jeśli są dozwolone). Spowoduje to przyspieszenie działania w systemie Linux.

21. Jak sprawdzić aktualne limity pamięci współdzielonej ?

Polecenie: # ipcs -lm 

Wynik będzie podobny do :

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 268435456
max total shared memory (kbytes) = 68719476736
min seg size (bytes) = 1

# ulimit -a 

22. Jak sprawdzić które procesy używają pamięci współdzielonej ?

Polecenie: # ipcs -pm

------ Shared Memory Creator/Last-op --------
shmid      owner      cpid       lpid
107741184  root       29293      29293
108429313  root       29412      29412
108986370  root       25690      25657
108396547  root       29396      29396
109019140  root       25709      25657
109051909  root       25709      25657

23. Co to jest KERBEROS ?

Kerberos jest to protokół uwierzytelniania i autoryzacji w sieci komputerowej wykorzystujący centrum dystrybucji kluczy zaprojektowany w MIT. W pierwszym kroku następuje uwierzytelnienie klienta na serwerze który przesyła swoją nazwę użytkownika do centrum dystrybucji kluczy, które tworzy unikalny identyfikator i szyfruje go za pomocą tajnego klucza zwracając zaszyfrowaną wiadomość do stacji użytkownika.

24. Jaka jest różnica pomiędzy protokołami TCP i UDP ?

Protokół UDP wykorzystywany jest przez programy użytkowe do przesyłania datagramów do innych programów użytkowych rozróżniając poszczególne programy przy użyciu portów protokołów. Oznacza to iż każdy komunikat UDP poza przesyłanymi danymi zawiera nr portu odbiorcy oraz nr portu nadawcy. Do przesyłania komunikatów używa się podstawowego protokołu IP. W tego rodzaju komunikacji nie ma mechanizmu potwierdzającego iż dany komunikat dotarł do adresata, komunikaty nie są porządkowane ani nie występuję sprzężenie zwrotne kontrolujące szybkość przesyłania danych pomiędzy maszynami. Komunikaty UDP mogą ginąć , byś duplikowane, opóźniane lub dostarczane w niewłaściwej kolejności niż zostały wysłane. Odpowiedzialność za w/w problemy spada na aplikacje będącą odbiorcą tego rodzaju pakietów.

W przypadku protokołu TCP  gdy zajdzie komunikacja sprawdzane jest czy dane dotarły do miejsca przeznaczenia oraz czy zachowana została właściwa kolejność pakietów. Istnieje tu również mechanizm pozytywnego potwierdzenia z retransmisją polegającego na tym iż dane są wysyłane ponownie do czasu odebrania informacji , że zostały poprawnie dostarczone. Jednostka danych przesyłana pomiędzy modułami TCP nosi nazwę segmentu. Każdy z segmentów posiada sumę kontrolną wykorzystywaną przez odbierającego do sprawdzenia poprawności danych i jeżeli są prawidłowe wysyłane jest pozytywne potwierdzenie do nadawcy.  W przeciwieństwie do UDP , TCP wymaga aby dwa punkty końcowe zgodziły się na współpracę czyli zanim jakakolwiek porcja danych zostanie przesłana wcześniej programy końcowe muszą nawiązać połączenie.

Protokół UDP ma takie same zadania jak TCP ale dysponuje znacznie mniejszą ilością funkcji. Jedyną funkcją zapewniającą niezawodność w przypadku UDP jest możliwość ponownego wysłania pakietu jeżeli nie dotarł on do adresu docelowego. Główną zaleta UDP jest jego prędkość ale decyzja o jego użyciu powinna uwzględniać fakt iż dane mogą zgubić się czasem pomiędzy punktami przesyłu. TCP zapewnia w pełni dwukierunkowe połączenie między maszynami i danych oraz realizuje kontrolę przepływu.

W skrócie TCP zapewnia potwierdzenie że dane dotarły do odbiorcy w określonym czasie i w odpowiedniej uporządkowanej kolejności , w przypadku UDP pojęcie potwierdzenia , przekroczenia czasu , retransmisji czy metody zachowania odpowiedniej kolejności  nie są obecne. Można też powiedzieć iż UDP jest protokołem bezpołączeniowym a TCP połączeniowym. 

UDP działa na zasadzie "best-effort". Protokół obsługuje wykrywanie błędów za pomocą sumy kontrolnej, ale po wykryciu błędu pakiet jest odrzucany. Nie podejmuję się  próby ponownego przesłania pakietu do odzyskiwania po tym błędzie. Dzieje się tak dlatego, że UDP jest zwykle przeznaczony dla aplikacji wrażliwych na czas, takich jak gry lub transmisja głosu.
Odzyskiwanie z błędu byłoby bezcelowe, ponieważ do czasu, gdy otrzyma się retransmitowany pakiet, nie będzie to miało żadnego zastosowania.

Protokół TCP wykorzystuje zarówno wykrywanie błędów, jak i odzyskiwanie po błędzie. Błędy są wykrywane przez sumę kontrolną, a jeśli pakiet jest błędny i nie jest potwierdzany przez odbiorcę,  powoduje to ponowną transmisję przez nadawcę. Ten mechanizm operacyjny nosi nazwę Pozytywnego Potwierdzenia z Retransmisją (PAR).

25. Jaka jest różnica pomiędzy haszowaniem a szyfrowaniem ? 

Tak zwane "haszowanie" czy też obliczanie skrótu jest funkcją jednokierunkową. Dane wejściowe dla tej funkcji np. tekst czy też hasło po wykonaniu odpowiednich obliczeń zamieniane są na skrót czyli wygenerowany na podstawie danej funkcji haszującej ciąg znaków. W przypadku haseł działa to tak że użytkownik podaje hasło następnie przy użyciu funkcji oblicza się jego hash i porównuje się z hashem zapisanym w systemie. Chodzi o to , że hasła nie są nigdzie przechowywane w postaci możliwej do odczytania. W przypadku "haszowania" stosuję się też dodatkowy element w postaci "soli" (salt) sól ta to zupełnie przypadkowy ciąg znaków dołączany do hasza.

Szyfrowanie natomiast to proces odwracalny. Szyfrowanie danych czy haseł przeprowadzone jest przy użyciu jakiegoś klucza i klucz ten musi być przechowywany gdzieś w systemie co potencjalnie daje możliwość uzyskania do niego dostępu.

Bezpieczeństwo w przypadku hasza opierane jest na tym iż w przypadku ataku atakujący musi przeszukać odpowiednio dużą ilość możliwych haseł jakie muszą zostać obliczone przy użyciu danej funkcji haszującej i poddane porównaniu z hasłami w przechowywanymi w danym systemie do tego musiał by jeszcze odgadnąć losowy ciąg znaków znajdujący się w przestrzeni "salt". W przypadku szyfrowanie atak skierowany jest na uzyskanie dostępu do klucza jakim dane zostały zaszyfrowane.

26. Co to jest curl ?

CURL jest to napisana w języku C sieciowa biblioteka programistyczna jaka używana jest po stronie klienta dostosowana do współpracy z wieloma językami programowania. Umożliwia wysyłanie zapytań HTTP , pobieranie z serwerów stron i plików oraz wysyłanie treści do formularzy.

27. Co to jest NMAP ?

Nmap jest dostępnym na licencji Open Source narzędziem służącym do eksploracji sieci i wykonywania audytów bezpieczeństwa. W programie zaimplementowano wiele technik testowania portów TCP, UDP oraz SCTP oraz dodatkowo przy użyciu nmap istnieje możliwość identyfikacji systemów operacyjnych na skanowanych hostach.  (nmap -O ip_address). Przy użyciu przełączników można wykonać ciekawy audyt np.:

  • sV- detekcja usług 
  • -A detekcja usług w raz z detekcją OS 
  • --allports - bez pomijania portów 
  • -sR - skanowanie RPC 
  • -O - wykrywanie wersji OS 
  • -S  - ustawienie adresu nadawcy
  • -e - używanie wybranego interfejsu
  • -oN - zapis wyników do pliku 
  • -sn - skanowanie podsieci 
Więcej można się dowiedziec na stronie projektu nmap.org

28. W jaki sposób nadaje się lub usuwa uprawnienia do plików w Linux i jakie są ich rodzaje ?

W celu ustawiania uprawnień , nadawania , zmieniania , lub usuwania dostęu do danego pliku używa się polecenia chmod . Używając symbolu plusa (+) dodajemy uprawnienia , a przy użyciu symbolu minusa (-) usuwamy uprawnienia. Przy użyciu liter : u (user) , g (group), o (others) oraz a (all) wybieramy dla kogo wykonujemy modyfikacje uprawnień. Używając natomiast liter : r (read), w (write) oraz x (execute) określamy o jaki rodzaj dostępu chodzi. Rodzaje dostępu to : 
  • odczyt (r)
  • zapis (w)
  • wykonanie (x)
Przykładowo wydając polecenie: 

# chmod go+rw plik nadajemy możliwość odczytu i zapisu do plik dla użytkowników w danej grupie oraz pozostałych. 

Można również zamiast liter używać oznaczeń liczbowych określających poziom dostępu do danego pliku. 
  • -rw------- 600 prawa do odczytu i zapisu tylko dla właściciela pliku
  • -rw-r--r-- 644 prawa odczytu i zapisu dla właściciela oraz odczytu dla wszystkich pozostałych użytkowników.
  • -rw-rw-rw- 666 prawa odczytu i zapisu dla wszystkich użytkowników.
  • -rwx------ 700 wszystkie prawa (odczyt, zapis, uruchomienie) tylko dla właściciela pliku.
  • -rwxr-xr-x 755 prawa do odczytu, zapisu i uruchomienia dla właściciela pliku oraz odczytu i uruchomienia dla wszystkich innych użytkowników
  • -rwxrwxrwx 777 wszystkie prawa dla wszystkich użytkowników (ustawienie niebezpieczne)
  • -rwx--x--x 711 prawa odczytu zapisu i uruchomienia dla właściciela pliku oraz prawo uruchomienia dla pozostałych użytkowników.
  • drwx------ 700 dotyczy prawa zapisu i odczytu w katalogu tylko przez właściciela. Katalogom zawsze musi być ustawione prawo dostępu x.
  • drwxr-xr-x 755 do takiego katalogu wszyskie prawa ma właściciel, a wszyscy pozostali użytkownicy mogą tylko odczytać jego zawartość.
  • drwx--x--x 711 wszystkie prawa ma właściciel. Katalog z takimi prawami dostępny jest także dla wszystkich pozostałych użytkowników, lecz jego zawartość jest przed nimi ukryta (polecenie ls nie wyświetli listy plików umieszczonych w tak oznaczonym katalogu). Aby odczytać plik użytkownik musi znać jego nazwę.
29. Co oznacza jeżeli nazwa pliku w systemie Linux zaczyna się od kropki ?

Generalnie pliki, których nazwa rozpoczyna się znakiem kropki są plikami ukrytymi w systemie. Zazwyczaj są to pliki zawierające konfiguracje lub ważne dane dlatego ich ukrycie zabezpiecza użytkownika przed ich przypadkowym usunięciem itp. Wyświetlenie listy plików wraz z ukrytymi czyli poprzedzonymi kropką jest możliwe z przełącznikiem -a : 

# ls -la 
# ll -la 

30. W jaki sposób sprawdzić w jakim katalogu aktualnie się znajdujemy ?

Do sprawdzenia aktualnej lokalizacji w jakiej aktualnie znajduje się użytkownik używa się polecenia :  # pwd 

31. Co nazywamy "demonem" w systemie Linux ?

Demon (ang. daemon) jest procesem lub programem działającym wewnątrz systemu operacyjnego niewymagającym interakcji z użytkownikiem. Program taki najczęściej działa w tle nasłuchując poleceń na odpowiednim porcie sieciowym obsługując przychodzące połączenia. Analogią w Windows są usługi Windows. W systemach Linuxowych nazwy demonów mają na końcu literę "d" np.: 
  • ftpd 
  • httpd
  • sftpd
  • sshd 
32. Co to są zmienne środowiskowe ?

Zmienna środowiskowa to posiadająca nazwę wartość jaka może być re-używana przez powłokę. Zmienne te używa się jako dodatkowe dane przekazywane do uruchomianego programu. Wykorzystywane są podczas startu systemu, logowania się użytkownika gdzie przy ich użyciu ustawiane są parametry jakie dane użytkownik dostaje domyślnie np.:
  1. katalog domowy (HOME)
  2. interpreter języka poleceń (SHELLL) 
W powłoce bash aktulanie przypisane zmienne środowiskowe można zobaczyć uzywając polecenia 

# env

33. Co to jest cron w systemie Linux ?

Cron w systemie Linux jest to narzędzie , program umożliwiający tworzenie zaplanowanych w czasie zadań , które mają zostać wykonane. Użytkownik określa czas wykonania oraz wskazuje polecenie, skrypt lub program jaki ma się w danym określonym czasie wykonać. Wykonanie może zostać określone w formie minut , godzin, dni miesiąca, danego miesiąca, dnia tygodnia. Może zostać uruchomione wraz lub też będzie powtarzane okresowo. Polecenia używane do konfiguracji crontab: 

  • crontab -e - utworzenie własnego pliku zadań dla danego użytkownika 
  • crontab -l - lista aktualnych zadań 
  • crontab -r - usunięcie zadań 
34. Jaka jest różnica między cron'em a anacronem ?

Oba rozwiązania służą do automatycznego uruchamiania zadań w określonym czasie. Różnica jest w możliwościach definiowania faktu kiedy dane zadania mają być wykonane. W przypadku cron najmniejszą jednostką czasu jest minuta , anacron umożliwia zdefiniowanie czasu zaczynając od dnia. Dla Anacrone nie jest istotne o jakiej porze dnia dane zadanie zostanie wykonane ważne jest by stało si to danego dnia. Cron sprawdza się bardziej w przypadku serwerów natomiast anacron bardziej nadaje się dla desktopów , które nie muszą być włączone przez cały czas ale gdy zostaną uruchomione danego dnia chociaż raz anacrone wykona zadane zadania. 

35. Co w systemie Linux określamy przekierowaniem i jak używać potoków?

W systemie Linux dla każdego polecenia mamy jakieś dane wejściowe (stdin) oraz dwie drogi wyjścia stdout i stderr. Mówiąc o przekierowaniu chodzi o to skąd mogą pochodzić dane wejściowe lub gdzie mają trafiać dane wyjściowe. Dla przykładu dane wejściowe mogą pochodzić z pliku i po przetworzeniu również mogą trafiać do pliku. Przekierowania z poziomu konsoli wykonuje się przy użyciu symboli : 
  • >
  • >>
Korzystając z powyższego można wynik każdego polecenia zapisać w pliku np.: 

find / -size +100M &> duze-pliki-pow-100M.txt

Jeżeli jednak zajdzie potrzeba skorzystać z pliku jako danych wejściowych można to zrobić odwracając przekierowanie np.: 

nslookup < lista-domen

Mówiąc o przekierowaniach strumieni należ również wspomnieć o potokach. Potoki są przydatną funkcjonalnością umożliwiającą przekierowanie strumienia wyjścia z jednej komendy na wejście kolejnej.

W konsoli stosuje się zapis 

polecenie1 | polecenie2 | polecenie3 | itd... 

np.: 

ls -l /etc | grep host


Podsumowując :

Przekierowania standard output - stdout:
  • na konsolę - domyślnie
  • > do pliku (nadpisanie)
  • » dopisanie do pliku
  • | do stdin innej komendy (potok)
Przekierowania standard input - stdin:
  • < ze wskazanego pliku
Przekierowania standard error - stderr:
  • na konsolę - domyślnie
  • 2> do pliku (nadpisanie)
  • 2» dopisanie do pliku
Jednoczesne przekierowanie stdout oraz stderr:
  • &> do pliku (nadpisanie)
  • &» dopisanie do pliku
Przekierowanie tam gdzie drugi strumień:
  • 1>&2- przekierowanie strumienia stdout tam gdzie jest przekierwaony stderr;
  • 2>&1- przekierowanie strumienia stderr tam gdzie jest przekierwaony stdout;
  • | - potok, przekierowanie stdout na stdin innej komendy
36. Co to jest nohup w środowisku Linux ?

Polecenie nouhup umożliwia uruchomienie programu w tle tak by działał on nawet wtedy gdy zamknięta zostanie konsola lub uzytkownik który go uruchamiał wyloguję się z systemu. 

# nohup ./start_program.sh &

Przeniesienie w tło zapewnia użycie znaku ampersandu na końcu komendy. 

37. Co to jest "grep" w systemie Linux? 

Grep jest to program , komenda dostępna z wiersza poleceń w środowiskach Linux umożliwiająca przeszukiwanie w tekście oraz wyodrębnianie linii pasujących do zadanego wzorca. Polecenia "grep" używa się w następujący sposób:

# grep [opcje] [wzorzec] plik

Popularne opcje dla polecenia grep:
  • c – zamiast wyświetlać linie ze znalezionym fragmentem wyświetla liczbę znalezionych linii;
  • -L – nie wyświetla znalezionego fragmentu tylko pokazuje nazwy plików, w których nie było tego ciągu znaków;
  • -l – odwrotnie do poprzedniego polecenia, wyświetla pliki w których znalazło dany ciąg znaków;
  • -n – wyświetlany jest numer linii w pliku w których znaleziono dany ciąg znaków;
  • -w – wyszukuje tylko całe słowa;
  • -x – wyszukuje tylko całe linie;
  • -v – negacja zapytania
  • -f plik – dane do wyszukania są brane po jednym wierszu z ‘plik’;
  • -h – po podaniu kilku plików do przeszukania po znalezieniu danego ciągu znaków przy danej linii nie będzie podany plik, w którym się to znajdowało;
  • -i – ignoruje wielkość liter, tzn. jeżeli podamy do wyszukania słowo ‘ala’, to pokaże nam ‘ALA’, ‘Ala’, ‘AlA’ itd.;
  • -r – gdy plik podany do przeszukania jest katalogiem, to zostaną przeszukane wszystkie pliki w tym katalogu
38. W jaki sposób wyłączyć działający proces w systemie Linux?

Każdy uruchomiony proces może zostać zidentyfikowany po nr PID jaki został mu nadany w momencie uruchomienia. Uruchomione procesy wraz z numerami pid można zobaczyć używając polecenia : # ps. W celu zatrzymania procesu stosujemy komendę "kill"wraz numerem PID procesu jaki chcemy zatrzymać. 

Przykład: 

# kill -9 95487

39. W jaki sposób sprawdzić ile miejsca na dysku zajmuje dany folder ?

Aby szybko sprawdzić rozmiar wskazanego katalogu można użyć polecenia du. Używa się go w następujący sposób: 

# du -sh /folderX

40. Jakim poleceniem w środowisku Linux można utworzyć folder (katalog) ?

Do utworzenia katalogu używana jest komenda mkdir.

# mkdir nazwa_katalogu

Lub od razu z podkatalogami 

# mkdir -p test/test1/test2/

41. Wyjaśni co oznacza pojęcie "Network bonding" oraz omów różne jego typy.

Przez pojęcie "bondingu" z ang. wiązania rozumiemy łączenie ze sobą interfejsów sieciowych w celu poprawy ich przepustowości, uzyskania redundancji czy też balansowania ruchu sieciowego. Daje to zabezpieczenie na sytuację gdy jeden z interfejsów ulegnie awarii drugi nadal będzie działał. Istnieje kilka typów łączenia: 
  1. balance-rr lub mode 0 - Jest to domyślny sposób na wiązanie interfejsów działający w oparciu o algorytm round-robin mający na celu równoważenie obciążenia.
  2. active-backup lub mode 1 - W tym przypadku w tym samym czasie aktywny jest tylko jeden interfejs, a drugi istnieje w statusie oczekiwania i zostanie użyty w przypadku awarii pierwszego.
  3. balance-xor lub mode 2 - Ochrona przed awarią za pomocą polityki XOR (kontrawalencji, alternatywy wykluczającej, ...) opartej o adres MAC
  4. broadcast lub mode 3 - Dane transmitowane są na każdym interfejsie podrzędnym ale może powodować spowolnienie. 
  5. 802.3ad lub mode 4 - Utworzenie grup agregacji dzielących tą samą prędkość. 
  6. balance-tlb lub mode 5 - Adaptacyjne równoważenie obciążenia transmisji ruchu wychodzącego. Ruch wychodzący jest rozdzielany w zależności od bieżącego obciążenia (wyliczonego w oparciu o szybkość) na każdym interfejsie podrzędnym. Ruch przychodzący jest odbierany przez bieżący interfejs podrzędny. Jeżeli nastąpi awaria interfejsu odbierającego, inny interfejs przejmuje od niego adres MAC.Tryb ten zapewnia równoważenie obciążenia sieciowego wychodzącego i zwiększa odporność na awarie.
  7. balance-alb lub mode 6 - Adaptacyjne równoważenie obciążenia. Połączenie balance-tlb [bufor: TLB] z równoważeniem ruchu przychodzącego [bufor RLB] dla ruchu IPv4. Równoważenie otrzymywanego obciążenia osiągane jest poprzez negocjowanie ARP, osiągane przez repliki ARP wysyłane z systemu lokalnego na wyjście i nadpisywanie adresu sprzętu źródłowego unikalnym adresem sprzętowym jednego z interfejsów tak, że różne peery używają różnych adresów sprzętowych dla serwera. ¹Tryb ten zapewnia równoważenie obciążenia sieciowego wejściowe i wyjściowego, oraz zwiększa odporność na awarie.
42.  W jaki sposób rozwiązać problem, w którym występuję błąd "filesystem is full" czyli przepełnienie dysku, ale gdy sprawdzasz zajętość używając komendy "df" widać , że zasoby nie są zajęte na 100%?

Powyższa sytuacja zachodzi wtedy gdy wykorzystane zostaną wszystkie i-nody. Pomimo iż sprawdzając poleceniem "df" widoczne będzie jeszcze wolne miejsce system będzie komunikował błąd o zapełnieniu dysku. W takim wypadku należy jeszcze wykonać sprawdzenie poleceniem : 

# df -i 

Sytuacja wykorzystania inodów zachodzi najczęściej gdy mamy do czynienie z dużą ilością plików o nie wielkim rozmiarze, a każdy z nich zajmuje 128 bajtów struktury inoda. By rozwiązać problem należy zwolnić miejsce w przestrzeni inodów. 

43. Która usługa (proces) w systemie Linux odpowiada za rejestracje zdarzeń jakie zachodzą w systemie?

Procesem logującym zdarzenia w systemie Linux jest syslogd. Zdarzenia rejestrowane są do odpowiednich plików logów.

44. Co umożliwia sar i gdzie są przechowywane logi dla sar?

Sar zbiera, raportuje lub zapisuje informacje na temat aktywności systemu. Dane te przechowywane są w logach. Narzędzie to przydaje się do analiz wydajności systemu umożliwiając analizę takich parametrów jak CPU, pamięć , zapis na dysku, informację o interfejsach sieciowych. Zapisy logów znajdują się w /var/log/sa/sadd gdzie dd oznacz parametr wskazujący na dany dzień.

45.Jakim poleceniem można utworzyć archiwum z pliku lub katalogu , które następnie można przesłać na inny serwer?

W systemach Linux do archiwizacji można użyć polecenia tar. W celu spakowania folderu lub pliku stosujemy składnie : tar -cvf /home/katalog. W celu rozpakowania archiwum składnia ma postać : tar -xvf plik.tar. Do archiwizacji można również użyć polecenia gzip.

46. Podaj przykładowe polecenia umożliwiające przeglądanie zawartości plików?

W systemie Linux mamy wiele komend służących do odczytu i przeglądania zawartości plików najpopularniejsze z nich to :

  1. cat -  Polecenie wyświetla zawartość pliku na standardowe wyjście. 
  2. less - komenda umożliwia wyświetlenie zawartości pliku w postaci strony jaką można przewijać do przodu i do tyłu po jednej linii. 
  3. tail - Wyświetlenie ostatniej części pliku ( z przełącznikami można określić ilość linii)
  4. head - Wyświetlenie początku pliku ( z przełącznikami można określić ilość linii)
  5. more - Wyświetlenie zawartości pliku w postaci strony o przewijanie jej po stronie.
47. Przedstaw i omów podstawowe polecenia związane z konfiguracją i analizą sieci.

Każda maszyna w firmie jest podłączona do sieci. Niezależnie od tego czy chodzi tu o sieć wewnętrzną czy zewnętrzną. Rozwiązywanie problemów sieciowych jest podstawową czynnością dla każdego administratora jeżeli chodzi o konfiguracje znajdującą się na danej maszynie. 

Poniżej kilka podstawowych poleceń przydatnych podczas konfiguracji i analizy sieci. 
  1. hostname - polecenie wyświetlające aktualną nazwę hosta oraz umożliwiające jej ustawienie. 
  2. ping - Polecenie sprawdzające czy inny host w sieci jest osiągalny (dostępny) dla danego hosta na jakim to polecenie zostaje wykonane. Sprawdzenie to nie jest w 100% pewnym sposobem. 
  3. ifconfig - komenda służąca do wyświetlenia konfiguracji sieci oraz danych interfejsów. Polecenie to zastępowane jest przez komendę IP. 
  4. ip - polecenie wyświetlające ustawienia dotyczące interfejsów sieciowych. Stosuje się do konfiguracji urządzeń , tras sieciowych i tunelowania. 
  5. netstat - Wyświetlenie aktywnych połączeń sieciowych TCP w raz z portami, na których nasłuchiwany jest ruch sieciowy, statystyki protokołu IPv4 dla protokołów IP, ICMP,TCP i UDP, statystyki protokołu IPv6. Poleceniem jakie może zostać użyte zamiennie dla netstat jest "ss".
  6. traceroute - Narzędzie służące do rozwiązywania problemów z siecią rejestrujące ilość przeskoków danego pakietu zanim dotrze do miejsca docelowego. Działanie traceroute oparte jest o protokoły komunikacyjne UDP i ICMP. Podobną funkcjonalność ma narzędzie mtr.
  7. tracepath - Narzędzie identyczne jak traceroute ale nie wymaga uprawnień konta root.
  8. dig - Narzędzie do odpytywania serwerów DNS
  9. nslookup -  Polecenie służące do wyszukiwania szczegółowych informacji dotyczących serwerów DNS włączając adres IP , domeny czy aliasy.
  10. route - Polecenie wyświetla informacje na temat rutingu. Umożliwia dodawanie, modyfikacje i usuwanie tras sieciowych. 
  11. ifup / ifdown - Podniesienie lub położenie interfejsu sieciowego. 
48. Napisz skrypt w języku bash, który odwróci kolejność podanych argumentów.

#!/bin/bash

for (( i = ${#}; i > 0; i-- )); do
        echo ${!i}
done

Efekt działania : 

# ./revers.sh 1 2 3 4 5
5
4
3
2
1

49. Jak napisać skrypt w języku bash, w taki sposób by dany użytkownik mógł uruchomić tylko jedną instancję tego skryptu ? 

LOCKFILE=/tmp/lock-`whoami` 
 if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`; then 
     echo "Ten skrypt juz dziala!" 
     exit 1 
 fi trap "rm -f ${LOCKFILE}; exit" INT TERM EXIT 
 echo $$ > ${LOCKFILE}

Uruchomienie skryptu nadaje jednocześnie nazwę pliku /tmp/lock-nazwa_użtkownika. Następnie następuję weryfikacja czy taki plik już istnieje oraz sprawdzenie czy numer PID zapisany w tym pliku jest uruchomiony. Jeżeli powyższe warunki zostaną spełnione pojawi się komunikat , że jedna instancja tego skryptu jest już uruchomiona.

50. Do czego służy polecenie "lsof" w systemie Linux ? 

Polecenie "lsof" służy do wyświetlenia listy otwartych plików oraz programów, które je używają.
Popularne przełączniki do polecenia "lsof" to :

  • # lsof -u [username] - Wyświetlenie aktualnie otworzonych plików danego użytkownika
  • # lsof -i -u^username - Wyświetlenie aktualnie otworzonych plików z wykluczeniem danego użytkownika.
  • # lsof -p 1234 - Wyświetlenie plików aktualnie używanych przez dany proces podany jako nr PID
Polecenie często przydaje się gdy przy użyciu polecenia "unmount" nie możemy od montować danego zasobu ponieważ istnieją na nim aktualnie otworzone pliki. 

Jeżeli znacie lub trafiliście inne pytania , które mogły by pojawić się w kolejnej części "popularnych pytań ..." zachęcam do pozostawienia ich w komentarzach do tego wpisu. 

Komentarze

  1. Jestem pod wrażeniem. Bardzo ciekawie napisany artykuł.

    OdpowiedzUsuń
    Odpowiedzi
    1. Fajnie , że Ci się podoba ten wpis , mam nadzieje że się przydał ;-)

      Usuń
  2. Bardzo fajny artykuł, tylko mam pewne zastrzeżenia. Czy te wszystkie pytania są aby na pewno potrzebne? Ktoś może być genialnym programistą niekoniecznie znając nazwy niektórych narzędzi. Może z nich korzystać ale nie znać ich nazw. Ktoś jakby miał problemy z obsługą to zapraszam do technodrome.pl gdzie udzielona będzie wam profesjonalna pomoc

    OdpowiedzUsuń
  3. mnóstwo ciekawych inspiracji!


    OdpowiedzUsuń
  4. świetny blog, ciekawe wpisy

    OdpowiedzUsuń
  5. Bardzo obszerny artykuł, wow. Jestem pod wrażeniem.

    OdpowiedzUsuń

Prześlij komentarz

Najczęściej czytane w tym miesiącu

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości