Przydatne przykłady i sztuczki

Przydatne przykłady i sztuczki

W tym artykule przyjrzymy się uzyskaniu podstawowych informacji o konfiguracji sprzętu, systemu i systemu operacyjnego bezpośrednio z wiersza polecenia w terminalu. Posiadanie tych informacji i wiedza o tym, gdzie je znaleźć, często pomaga w konfigurowaniu systemu, badaniu optymalnych rozwiązań sprzętowych i oprogramowania oraz ogólnie kontrolującym system Linux, który posiadasz lub zarządzasz.

Skoncentrujemy się głównie na informacjach każdego dnia, które są wymagane regularnie. Większe wyniki często wymaga kilku wyszukiwań online, aby najpierw zdefiniować wyrównanie, a następnie często wymaga dodatkowych umiejętności interpretacji wyników lub wyników.

Na przykład nie będziemy patrzeć na dane wyjściowe VMSTAT, Chociaż odkryjemy, jak dowiedzieć się, jaki proces jest w twoim systemie bez otwierania kaptura. Przyjrzymy się również niektórym podstawowym zmiennym ograniczającym zasoby i otaczających obawach. Docelowi odbiorcy tego artykułu jest zatem początkujący i średnio zaawansowany.

Ten artykuł jest częścią serii przydatnych wierszy poleceń i sztuczek Bash.

W tym samouczku się nauczysz:

  • Przydatne wskazówki, sztuczki i metody
  • Jak wchodzić w interakcje z wierszem poleceń bash w zaawansowany sposób
  • Jak ogólnie wyostrzyć swoje umiejętności i stać się bardziej biegły użytkownik Bash
Przydatne przykłady i sztuczki

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny od rozkładu Linuksa
Oprogramowanie Wiersz poleceń Bash, system oparty na Linuksie
Inny Wszelkie narzędzie, które nie jest zawarte w skorupce Bash domyślnie można zainstalować za pomocą za pomocą sudo apt-get instal instal narzędzie (Lub Mnij instalacja dla systemów opartych na Redhat)
Konwencje # - Wymaga wykonywania Linux -Commands z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-Wymaga wykonania Linux-commands jako zwykłego niepewnego użytkownika

Przykład 1: Jaki procesor jest w twoim systemie?

Często chcemy szybko dowiedzieć się, czym jest procesor w systemie, bez otwierania pudełka. Otwarcie komputera fizycznego jest również nieco trudne, jeśli zarządzasz serwerem po drugiej stronie planety. Znalezienie szczegółów procesora jest łatwe i proste:

$ cat /proc /cpuinfo | GREP „Nazwa modelu” | Głowa -n1 Nazwa modelu: Intel (R) Core (TM) I9-9900K CPU @ 3.60GHZ $ CAT /PROC /CPUINFO | GREP „Nazwa modelu” | WC -L 16 

W pierwszym poleceniu zapytaliśmy dynamikę /proc/cpuinfo plik, który wymienia bieżący procesor wykryty przez system operacyjny. Istnieje 16 wierszy (jak widać w drugim poleceniu) dokładnie tego samego wyjścia, więc wymieniamy tylko pierwszy wiersz za pomocą głowa -n1 Komenda. Zauważ, że moglibyśmy również napisać te polecenia w następujący sposób:

$ grep „nazwa modelu” /proc /cpuinfo | Głowa -n1 Nazwa modelu: Intel (R) Core (TM) I9-9900K CPU @ 3.60GHZ $ grep „Nazwa modelu” /proc /cpuinfo | WC -L 16 


Możesz jednak użyć kot metoda eksploracji pełnego wyjścia (cat /proc /cpuinfo) Ponieważ wyświetlane jest wiele interesujących informacji na temat twojego procesora. Liczba 16 wynika z tego, że w tym konkretnym procesorze było 16 wątków, więc system operacyjny uważa go za 16 poszczególnych procesorów lub wątków do użycia.

Znalezienie swojego systemu operacyjnego i wydania

Często podczas zarządzania zdalnym serwerem chcemy upewnić się, że jest załatany do właściwej wersji systemu operacyjnego. Aby dowiedzieć się więcej, jakiego systemu operacyjnego używa komputer i jaka jest wersja, po prostu wykonaj Kat /etc /*wydanie*:

$ cat /etc /* release* dist dist dist.04 Distribut_codename = Focal Distribry_description = "Ubuntu 20.04.1 lts "name =" ubuntu "wersja =" 20.04.1 lts (Focal Fossa) "id = Ubuntu Id_ike = debian Pretty_name =" Ubuntu 20.04.1 lts "version_id =" 20.04 "home_url =" https: // www.Ubuntu.com/"support_url =" https: // help.Ubuntu.com/"bug_report_url =" https: // błędy.wyrzutnia.net/ubuntu/"privacy_policy_url =" https: // www.Ubuntu.com/legalne/terminy/-policy/privacy-policy ”version_codename = Focal Ubuntu_Codename = Focal 

Aby porównać, oto wyjście z tego samego polecenia na oparciu o malinowy Raspbian Pi 4:

$ cat/etc/* release* Pretty_name = "Raspbian GNU/Linux 10 (bustter)" name = "Raspbian GNU/Linux" version_id = "10" version = "10 (bustter)" version_codename = bustter id = Raspbian id_ike = debian = debian Home_url = "http: // www.Raspbian.org/"support_url =" http: // www.Raspbian.org/raspbianforums "bug_report_url =" http: // www.Raspbian.org/raspbianbugs " 


Gdy pamiętasz ten skrót, wkrótce znajdziesz go w wielu sytuacjach. Rzeczywiste pliki pokazane tutaj, przynajmniej na Ubuntu, to: /etc/lsb-uwalnianie I /etc/OS-Rulease. Na Raspbian jest tylko /etc/OS-Rulease.

Działający vs limity systemowe

Wiele limitów systemu operacyjnego jest domyślnie zaimplementowane w Linux. Są ustawione w sposób przebiegły, ponieważ często nie wpadniesz na nie, dopóki nie będziesz devops lub podobny inżynier maksymalizujący przepustowość zestawu zdalnych serwerów.

Zmiana tych zmiennych systemu operacyjnego wymaga pewnej wiedzy na temat każdego z nich, a ustawienie ich może czasami wymagać testów w celu ustalenia rozsądnych granic.

Kolejnym rozważeniem jest to, że limity systemowe mogą zostać osiągnięte na długo przed osiągnięciem limitu skonfigurowanego systemu operacyjnego, a jest to szczególnie prawdziwe, jeśli ustawisz takie limity systemu operacyjnego na bardzo dużą liczbę. Właśnie dlatego takie limity systemu operacyjnego są przede wszystkim: ograniczenie systemu operacyjnego od utraty kontroli nad fizycznym zasobem systemu (dysk, pamięć, pamięć, procesor) z powodu słabo zarządzanej limitu / limitu.

Zatem zmiana limitów opartych na systemie operacyjnym ma różne ryzyko. Ustawienie ich zbyt duże jest nie tylko łatwe, co powoduje, że system operacyjny często tracą kontrolę nad określonymi zasobami, ale także zmiana niektórych zmiennych, również niesie ze sobą niektóre ryzyko bezpieczeństwa.

Powiedzmy na przykład, że haker wyrzuciłby bombę widelca w system. Bomba widelca nie jest prawdziwą bombą, ale raczej exploitem opartym na oprogramowaniu, który powoduje powtarzanie systemu nowych skorup i wątków w kierunku jednego procesu organizacyjnego „bomby widełowej”. Gdyby liczba dozwolonych widelców została w jakiś sposób zmodyfikowana przez zmianę jednej lub więcej zmiennych systemowych, w systemie może wkrótce zabraknie zasobów procesora, próbując sprawić, że widelca.

Kolejnym aspektem do rozważenia jest to, jak bezpieczna jest serwer lub stacja robocza, od której zarządzasz. Jeśli znajduje się w strefie DMZ w centrum danych, w przeciwnym razie odizolowane od innych serwerów i używane tylko do zadań o niskich uprawnieniach (takich jak testowanie), ustawienie raczej wysokich limitów może być całkiem dopuszczalne. Gdyby ten sam serwer pchał kod produkcyjny i podpisuje pakiety wydawnictwa, zaleca się o wiele bardziej ostrożne zarządzanie zasobami systemowymi.

Możesz zobaczyć, w jaki sposób zmiana tych zmiennych wymaga specjalistycznej wiedzy i doświadczenia. Mimo to większość z nich jest łatwa do zrozumienia i ma wspólne angielskie nazwy.

Najczęstsze są ustawione /itp./bezpieczeństwo/limity.conf. Na przykład, aby znacznie zwiększyć maksymalną liczbę otwartych plików do 300000, możesz dodać następujące wiersze do /itp./bezpieczeństwo/limity.conf:

* Soft Nofile 300000 * Hard Nofile 300000 


To będzie 300 tys. Plików do otwarcia jednocześnie. Maksimum, które można ustawić dla tych zmiennych, to 1048576.

Zauważ, że istnieje różnica między „miękkimi” a „twardymi” limitami: twarde limity można podnieść tylko dalej źródło dostęp do poziomu, podczas gdy każdy proces może obniżyć limit. Jest to świetne do celów bezpieczeństwa, ponieważ procesy inne niż root nie będą w stanie przekraczać limitu. Miękki limit można zmienić w danym procesie w dowolnym momencie.

Istnieje wiele innych podobnych ustawień, które można zmienić z tego pliku. Aby uzyskać szeroki pomysł, możesz użyć Ulimit -a Aby zobaczyć limity mające zastosowanie do twojego systemu w tym momencie.

Kolejnym najbardziej widocznym plikiem, jeśli chodzi o dostrajanie zasobów systemowych /etc/sysctl.conf. W tym pliku możliwe jest finansowanie wielu parametrów jądra. Na przykład, aby ustawić maksymalną liczbę PID (identyfikatorów procesu) na 500 tys. I Zachwiastowanie systemu (jak łatwo system operacyjny będzie wymieniać informacje oparte na pamięci z informacjami na podstawie dysku - również o nazwie „zamiana”) na 5 (ustawienie, które ustawienie, które, które, które, które, które jest ustawienie Znacznie ogranicza wymianę), możesz dodać następujące /etc/sysctl.conf:

jądro.PID_MAX = 500000 VM.Swappiness = 5 

Nie zalecamy wdrożenia żadnego z powyższych ustawień bez dalszych badań, a następnie dostrajanie, a następnie konkretnie do twojego systemu. Często podnoszenie zmiennej do wyższego otoczenia nie spowoduje żadnych problemów, chyba że nastąpi nieprzewidziane zdarzenie, podobnie jak wcześniej omawiany przykład hakera.

Wniosek

W tym artykule przyjrzeliśmy się, w jaki sposób nasz system operacyjny utrzymuje zasoby pod kontrolą i jakie są główne pliki konfiguracyjne w związku z tym. Odkryliśmy również, jak dowiedzieć się, czym jest procesor w systemie i jakiego systemu operacyjnego i jego wersji używamy. Znając te podstawowe rzeczy, można zbadać dalej w określonych ustawieniach wykonanych /itp./bezpieczeństwo/limity.conf I /etc/sysctl.conf i zarządzaj systemami opartymi na Linuksie bardziej pewnie. Cieszyć się!

Powiązane samouczki Linux:

  • Przydatne przykłady i sztuczki
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Przydatne przykłady i sztuczki
  • Przydatne przykłady i wskazówki dotyczące linii poleceń Bash - część 2
  • Ubuntu 20.04 sztuczki i rzeczy, których możesz nie wiedzieć
  • Przydatne przykłady i wskazówki dotyczące linii poleceń Bash - część 4
  • Przydatne przykłady i sztuczki
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Ubuntu 20.04 Przewodnik
  • Mastering Bash Script Loops