Jak działa Linux. Podręcznik administratora. Wydanie II - ebook
Jak działa Linux. Podręcznik administratora. Wydanie II - ebook
Co każdy administrator powinien wiedzieć
Linux to system operacyjny będący solą w oku giganta z Redmond. Jego możliwości, wydajność, elastyczność i bezpieczeństwo zostały docenione przez zaawansowanych użytkowników. Natomiast różnorodność powłok graficznych oraz łatwość ich użytkowania przypadły do gustu osobom rozpoczynającym przygodę z tym systemem. Jeżeli chcesz mieć pełną kontrolę nad swoim komputerem i wykorzystać potencjał Linuksa, potrzebujesz tego podręcznika.
Dzięki niemu poznasz wszystkie elementy systemu — począwszy od czeluści jądra, a skończywszy na powłokach użytkownika. W kolejnych rozdziałach znajdziesz informacje na temat podstawowych poleceń, pozwalających na wydajną nawigację w systemie plików oraz wyświetlanie zawartości tych plików, a także na temat narzędzi do kompresji oraz sposobów zarządzania procesami. Ponadto zobaczysz, jak uzyskać dostęp do urządzeń i zarządzać twardymi dyskami. Na tym etapie będziesz już gotów porównać systemy plików ext3 i ext4 oraz poznać kierunki rozwoju systemów plików. Zdobędziesz także ciekawe wiadomości dotyczące startu systemu, konfiguracji harmonogramu zadań, dostępu do sieci oraz tworzenia skryptów ułatwiających pracę. Ta książka będzie pasjonującą lekturą dla każdego użytkownika chcącego zgłębić tajniki pracy z systemem Linux.
Dzięki tej książce:
- poznasz podstawowe polecenia dostępne w systemie Linux
- nauczysz się zarządzać dostępnymi zasobami i procesami
- opanujesz narzędzia programistyczne
- zaznajomisz się z podstawami tworzenia skryptów powłoki
- poznasz system Linux od podszewki
Wewnętrzne mechanizmy systemu Linux staną się w pełni dla Ciebie dostępne
Spis treści
Podziękowania (17)
Wstęp (19)
- Kto powinien przeczytać tę książkę? (19)
- Wymagania (20)
- Jak czytać tę książkę? (20)
- Ćwiczenia (21)
- Podział tej książki (21)
- Co nowego w drugim wydaniu? (22)
- Kilka słów o terminologii (22)
1. Informacje ogólne (23)
- 1.1. Poziomy i warstwy abstrakcji w systemie Linux (24)
- 1.2. Sprzęt: pamięć operacyjna (26)
- 1.3. Jądro systemu (26)
- 1.3.1. Zarządzanie procesami (27)
- 1.3.2. Zarządzanie pamięcią (28)
- 1.3.3. Sterowniki urządzeń i zarządzanie urządzeniami (29)
- 1.3.4. Wywołania systemowe (29)
- 1.4. Przestrzeń użytkownika (30)
- 1.5. Użytkownicy (32)
- 1.6. Spojrzenie w przyszłość (33)
2. Podstawowe polecenia i hierarchia katalogów (35)
- 2.1. Powłoka Bourne'a: /bin/sh (36)
- 2.2. Korzystanie z powłoki (37)
- 2.2.1. Okno powłoki (37)
- 2.2.2. Polecenie cat (37)
- 2.2.3. Standardowe wejście i wyjście (38)
- 2.3. Podstawowe polecenia (39)
- 2.3.1. Polecenie ls (39)
- 2.3.2. Polecenie cp (40)
- 2.3.3. Polecenie mv (40)
- 2.3.4. Polecenie touch (40)
- 2.3.5. Polecenie rm (41)
- 2.3.6. Polecenie echo (41)
- 2.4. Polecenia działające na katalogach (41)
- 2.4.1. Polecenie cd (42)
- 2.4.2. Polecenie mkdir (42)
- 2.4.3. Polecenie rmdir (42)
- 2.4.4. Rozwijanie nazw (nazwy wieloznaczne) (42)
- 2.5. Polecenia pośredniczące (44)
- 2.5.1. grep (44)
- 2.5.2. Polecenie less (45)
- 2.5.3. Polecenie pwd (45)
- 2.5.4. Polecenie diff (46)
- 2.5.5. Polecenie file (46)
- 2.5.6. Polecenia find i locate (46)
- 2.5.7. Polecenia head i tail (47)
- 2.5.8. Polecenie sort (47)
- 2.6. Zmienianie hasła i powłoki (47)
- 2.7. Pliki z kropką (47)
- 2.8. Zmienne środowiskowe i powłoki (48)
- 2.9. Ścieżka poleceń (49)
- 2.10. Znaki specjalne (50)
- 2.11. Edycja wiersza poleceń (50)
- 2.12. Edytory tekstu (51)
- 2.13. Uzyskiwanie pomocy (52)
- 2.14. Wejście i wyjście powłoki (54)
- 2.14.1. Standardowy strumień błędów (55)
- 2.14.2. Przekierowywanie standardowego wejścia (56)
- 2.15. Prawidłowe odczytywanie komunikatów o błędach (56)
- 2.15.1. Anatomia uniksowych komunikatów o błędach (56)
- 2.15.2. Typowe błędy (57)
- 2.16. Przeglądanie procesów i manipulowanie nimi (59)
- 2.16.1. Opcje polecenia (59)
- 2.16.2. Przerywanie działania procesów (60)
- 2.16.3. Kontrola zadań (61)
- 2.16.4. Procesy działające w tle (61)
- 2.17. Tryby plików i uprawnienia (62)
- 2.17.1. Modyfikowanie uprawnień (64)
- 2.17.2. Dowiązania symboliczne (65)
- 2.17.3. Tworzenie dowiązań symbolicznych (66)
- 2.18. Archiwizowanie i kompresowanie plików (67)
- 2.18.1. Program gzip (67)
- 2.18.2. Program tar (67)
- 2.18.3. Archiwa skompresowane (.tar.gz) (69)
- 2.18.4. Program zcat (69)
- 2.18.5. Inne narzędzia kompresujące (70)
- 2.19. Hierarchia katalogów (70)
- 2.19.1. Pozostałe katalogi główne (72)
- 2.19.2. Katalog /usr (73)
- 2.19.3. Umiejscowienie jądra systemu (73)
- 2.20. Uruchamianie poleceń przez superużytkownika (74)
- 2.20.1. Polecenie sudo (74)
- 2.20.2. Plik /etc/sudoers (74)
- 2.21. Podsumowanie (75)
3. Urządzenia (77)
- 3.1. Pliki urządzeń (78)
- 3.2. Ścieżka urządzeń sysfs (79)
- 3.3. Polecenie dd i urządzenia (81)
- 3.4. Podsumowanie nazewnictwa urządzeń (82)
- 3.4.1. Dyski twarde - /dev/sd* (82)
- 3.4.2. Napędy CD i DVD: /dev/sr* (83)
- 3.4.3. Dyski twarde PATA: /dev/hd* (84)
- 3.4.4. Terminale: /dev/tty*, /dev/pts/* i /dev/tty (84)
- 3.4.5. Porty szeregowe - /dev/ttyS* (85)
- 3.4.6. Porty równoległe - /dev/lp0 i /dev/lp1 (85)
- 3.4.7. Urządzenia audio - /dev/dsp, /dev/audio, /dev/snd/* i inne (86)
- 3.4.8. Tworzenie plików urządzeń (86)
- 3.5. System udev (87)
- 3.5.1. System plików devtmpfs (87)
- 3.5.2. Konfiguracja i działanie procesu udevd (88)
- 3.5.3. Program udevadm (90)
- 3.5.4. Monitorowanie urządzeń (91)
- 3.6. Szczegóły: SCSI i jądro Linuksa (92)
- 3.6.1. Pamięci masowe USB i protokół SCSI (95)
- 3.6.2. SCSI i ATA (96)
- 3.6.3. Ogólne urządzenia SCSI (97)
- 3.6.4. Wiele metod dostępu do jednego urządzenia (98)
4. Dyski i systemy plików (99)
- 4.1. Partycjonowanie urządzeń dyskowych (102)
- 4.1.1. Przeglądanie tablicy partycji (102)
- 4.1.2. Modyfikowanie tablicy partycji (104)
- 4.1.3. Geometria dysku i partycji (105)
- 4.1.4. Dyski SSD (107)
- 4.2. Systemy plików (107)
- 4.2.1. Typy systemów plików (108)
- 4.2.2. Tworzenie systemu plików (109)
- 4.2.3. Montowanie systemu plików (110)
- 4.2.4. Identyfikator UUID systemu plików (112)
- 4.2.5. Buforowanie dysku i systemu plików (113)
- 4.2.6. Opcje montowania systemów plików (114)
- 4.2.7. Ponownie montowanie systemu plików (115)
- 4.2.8. Tabela systemów plików /etc/fstab (116)
- 4.2.9. Rozwiązania konkurencyjne dla pliku /etc/fstab (118)
- 4.2.10. Pojemność systemu plików (118)
- 4.2.11. Sprawdzanie i naprawianie systemów plików (119)
- 4.2.12. Systemy plików o specjalnym znaczeniu (122)
- 4.3. Przestrzeń wymiany (123)
- 4.3.1. Wykorzystywanie partycji jako przestrzeni wymiany (123)
- 4.3.2. Wykorzystywanie pliku jako przestrzeni wymiany (124)
- 4.3.3. Jak wielkiej przestrzeni wymiany potrzebuję? (124)
- 4.4. Spojrzenie w przyszłość: dyski i przestrzeń użytkownika (125)
- 4.5. Tradycyjny system plików (126)
- 4.5.1. Przeglądanie szczegółów węzłów inode (128)
- 4.5.2. Praca z systemami plików w przestrzeni użytkownika (130)
- 4.5.3. Ewolucja systemów plików (130)
5. Jak uruchamia się Linux? (133)
- 5.1. Komunikaty rozruchowe (134)
- 5.2. Inicjowanie jądra i opcje rozruchu (135)
- 5.3. Parametry jądra (136)
- 5.4. Programy rozruchowe (137)
- 5.4.1. Zadania programu rozruchowego (138)
- 5.4.2. Przegląd programów rozruchowych (138)
- 5.5. Wprowadzenie do programu GRUB (139)
- 5.5.1. Przeszukiwanie urządzeń i partycji za pomocą wiersza poleceń programu GRUB (142)
- 5.5.2. Konfigurowanie programu GRUB (144)
- 5.5.3. Instalowanie programu GRUB (146)
- 5.6. Problemy z bezpiecznym rozruchem UEFI (148)
- 5.7. Ładowanie innych systemów operacyjnych (149)
- 5.8. Szczegóły programu rozruchowego (150)
- 5.8.1. Rozruch MBR (150)
- 5.8.2. Rozruch UEFI (150)
- 5.8.3. Jak działa GRUB? (151)
6. Uruchamianie przestrzeni użytkownika (153)
- 6.1. Wprowadzenie do procesu init (154)
- 6.2. Poziomy uruchomienia System V (155)
- 6.3. Identyfikowanie rodzaju procesu init (156)
- 6.4. systemd (156)
- 6.4.1. Jednostki i typy jednostek (157)
- 6.4.2. Zależności systemd (158)
- 6.4.3. Konfiguracja systemd (160)
- 6.4.4. Praca z systemd (163)
- 6.4.5. Dodawanie jednostek systemd (166)
- 6.4.6. Śledzenie i synchronizacja procesów systemd (167)
- 6.4.7. Uruchamianie na żądanie i zrównoleglanie zasobów (168)
- 6.4.8. Zgodność systemd z System V (173)
- 6.4.9. Programy pomocnicze systemd (173)
- 6.5. Upstart (174)
- 6.5.1. Procedura inicjowania procesu Upstart (175)
- 6.5.2. Zadania w procesie Upstart (176)
- 6.5.3. Konfiguracja Upstart (178)
- 6.5.4. Działanie procesu Upstart (183)
- 6.5.5. Protokoły procesu Upstart (184)
- 6.5.6. Poziomy uruchomienia procesu Upstart i zgodność z System V (185)
- 6.6. Proces init System V (186)
- 6.6.1. Proces init w stylu System V: sekwencja poleceń rozruchowych (188)
- 6.6.2. Farma dowiązań procesu init w stylu System V (189)
- 6.6.3. run-parts (190)
- 6.6.4. Sterowanie procesem init w stylu System V (191)
- 6.7. Wyłączanie systemu (192)
- 6.8. Początkowy system plików w pamięci RAM (193)
- 6.9. Rozruch awaryjny i tryb pojedynczego użytkownika (195)
7. Konfiguracja systemu: rejestrowanie, czas systemowy, zadania wsadowe i użytkownicy (197)
- 7.1. Struktura katalogu /etc (198)
- 7.2. Rejestrowanie dzienników systemowych (199)
- 7.2.1. Rejestrator systemowy (199)
- 7.2.2. Pliki konfiguracyjne (199)
- 7.3. Pliki związane z zarządzaniem użytkownikami (202)
- 7.3.1. Plik /etc/passwd (202)
- 7.3.2. Użytkownicy specjalni (203)
- 7.3.3. Plik /etc/shadow (204)
- 7.3.4. Manipulowanie użytkownikami i hasłami (204)
- 7.3.5. Praca z grupami (205)
- 7.4. Programy getty i login (206)
- 7.5. Ustawianie czasu (206)
- 7.5.1. Reprezentacja czasu jądra i strefy czasowe (207)
- 7.5.2. Czas sieciowy (208)
- 7.6. Planowanie powtarzalnych zadań w programie cron (209)
- 7.6.1. Instalowanie plików crontab (210)
- 7.6.2. Systemowe pliki crontab (210)
- 7.6.3. Przyszłość narzędzia cron (211)
- 7.7. Planowanie jednorazowych zadań w programie at (211)
- 7.8. Identyfikatory użytkowników i przełączanie ich (212)
- 7.8.1. Prawo właściciela procesu, efektywny identyfikator użytkownika, rzeczywisty identyfikator użytkownika i zapisany identyfikator użytkownika (212)
- 7.9. Identyfikowanie i uwierzytelnianie użytkowników (215)
- 7.9.1. Użycie bibliotek do uzyskiwania informacji o użytkownikach (216)
- 7.10. System PAM (217)
- 7.10.1. Konfiguracja systemu PAM (217)
- 7.10.2. Uwagi dotyczące systemu PAM (221)
- 7.10.3. System PAM i hasła (222)
- 7.11. Spojrzenie w przyszłość (223)
8. Wykorzystanie procesów i zasobów (225)
- 8.1. Śledzenie procesów (226)
- 8.2. Wyszukiwanie otwartych plików programem lsof (226)
- 8.2.1. Analizowanie danych wyjściowych polecenia lsof (227)
- 8.2.2. Użycie polecenia lsof (228)
- 8.3. Śledzenie działania programu i wywołań systemowych (228)
- 8.3.1. Polecenie strace (229)
- 8.3.2. Polecenie ltrace (230)
- 8.4. Wątki (231)
- 8.4.1. Procesy jednowątkowe i wielowątkowe (231)
- 8.4.2. Wyświetlanie wątków (231)
- 8.5. Wprowadzenie do monitorowania zasobów (233)
- 8.6. Pomiar czasu procesora (233)
- 8.7. Nadawanie procesom priorytetów (234)
- 8.8. Średnie obciążenia (235)
- 8.8.1. Użycie polecenia uptime (235)
- 8.8.2. Wysokie obciążenia (236)
- 8.9. Pamięć (237)
- 8.9.1. Zasady działania pamięci (237)
- 8.9.2. Błędy stron (238)
- 8.10. Monitorowanie wydajności procesora i pamięci za pomocą polecenia vmstat (239)
- 8.11. Monitorowanie operacji wejścia-wyjścia (241)
- 8.11.1. Użycie narzędzia iostat (241)
- 8.11.2. Wykorzystanie i monitorowanie urządzeń wejścia-wyjścia dla poszczególnych procesów - narzędzie iotop (243)
- 8.12. Monitorowanie poszczególnych procesów za pomocą narzędzia pidstat (244)
- 8.13. Dodatkowe zagadnienia (244)
9. Sieć i jej konfiguracja (247)
- 9.1. Podstawy dotyczące sieci (248)
- 9.1.1. Pakiety (248)
- 9.2. Warstwy sieciowe (249)
- 9.3. Warstwa internetowa (250)
- 9.3.1. Wyświetlanie adresu IP używanego komputera (252)
- 9.3.2. Podsieci (252)
- 9.3.3. Typowe maski podsieci i notacja CIDR (253)
- 9.4. Trasy i tabela routingu jądra (254)
- 9.4.1. Brama domyślna (255)
- 9.5. Podstawowe narzędzia protokołu ICMP i systemu DNS (256)
- 9.5.1. ping (256)
- 9.5.2. Program traceroute (257)
- 9.5.3. DNS i host (258)
- 9.6. Warstwa fizyczna i Ethernet (258)
- 9.7. Interfejsy sieciowe jądra (259)
- 9.8. Wprowadzenie do konfiguracji interfejsów sieciowych (260)
- 9.8.1. Ręczne dodawanie i usuwanie tras (261)
- 9.9. Konfiguracja sieci aktywowana podczas rozruchu (261)
- 9.10. Problemy z konfiguracją sieci ręczną i aktywowaną podczas rozruchu (262)
- 9.11. Menedżery konfiguracji sieciowych (263)
- 9.11.1. Działanie narzędzia NetworkManager (263)
- 9.11.2. Interakcja z narzędziem NetworkManager (264)
- 9.11.3. Konfiguracja narzędzia NetworkManager (265)
- 9.12. Rozpoznawanie nazw hostów (267)
- 9.12.1. Plik /etc/hosts (268)
- 9.12.2. Plik resolv.conf (268)
- 9.12.3. Buforowanie i system DNS bez konfiguracji (268)
- 9.12.4. Plik /etc/nsswitch.conf (269)
- 9.13. Host lokalny (270)
- 9.14. Warstwa transportowa: protokoły TCP i UDP oraz usługi (271)
- 9.14.1. Porty TCP i połączenia (271)
- 9.14.2. Ustanawianie połączeń TCP (272)
- 9.14.3. Numery portów i plik /etc/services (273)
- 9.14.4. Właściwości protokołu TCP (273)
- 9.14.5. Protokół UDP (274)
- 9.15. Ponowna analiza prostej sieci lokalnej (276)
- 9.16. Protokół DHCP (276)
- 9.16.1. Klient DHCP w systemie Linux (277)
- 9.16.2. Serwery DHCP w systemie Linux (277)
- 9.17. Konfigurowanie systemu Linux jako routera (277)
- 9.17.1. Łącza internetowe (279)
- 9.18. Sieci prywatne (279)
- 9.19. Translacja adresów sieciowych (maskarada IP) (280)
- 9.20. Routery i system Linux (282)
- 9.21. Zapory sieciowe (283)
- 9.21.1. Podstawy dotyczące linuksowych zapór sieciowych (283)
- 9.21.2. Konfigurowanie reguł zapory sieciowej (285)
- 9.21.3. Strategie tworzenia zapór sieciowych (287)
- 9.22. Ethernet, IP i ARP (289)
- 9.23. Ethernet bezprzewodowy (291)
- 9.23.1. iw (292)
- 9.23.2. Zabezpieczenia sieci bezprzewodowych (293)
- 9.24. Podsumowanie (293)
10. Usługi i aplikacje sieciowe (295)
- 10.1. Podstawy usług (296)
- 10.1.1. Dokładniejsza analiza (296)
- 10.2. Serwery sieciowe (298)
- 10.3. Secure Shell (SSH) (299)
- 10.3.1. Serwer SSHD (300)
- 10.3.2. Klient SSH (303)
- 10.4. Demony inetd i xinetd (305)
- 10.4.1. Wrapper TCP: tcpd, /etc/hosts.allow, /etc/hosts.deny (306)
- 10.5. Narzędzia diagnostyczne (306)
- 10.5.1. lsof (306)
- 10.5.2. tcpdump (308)
- 10.5.3. netcat (310)
- 10.5.4. Skanowanie portów (310)
- 10.6. Zdalne wywoływanie procedur (RPC) (311)
- 10.7. Zabezpieczenie sieci (312)
- 10.7.1. Typowe słabości (314)
- 10.7.2. Źródła danych o zabezpieczeniach (314)
- 10.8. Spojrzenie w przyszłość (315)
- 10.9. Gniazda: sposób komunikacji procesów z siecią (315)
- 10.10. Gniazda domenowe systemu Unix (317)
- 10.10.1. Korzyści dla projektantów (317)
- 10.10.2. Wyszczególnianie gniazd domenowych systemu Unix (318)
11. Wprowadzenie do skryptów powłoki (319)
- 11.1. Podstawy skryptów powłoki (319)
- 11.1.1. Ograniczenia skryptów powłoki (320)
- 11.2. Cudzysłowy i literały (321)
- 11.2.1. Literały (321)
- 11.2.2. Pojedyncze cudzysłowy (322)
- 11.2.3. Podwójne cudzysłowy (323)
- 11.2.4. Przekazywanie literału w postaci znaku pojedynczego cudzysłowu (323)
- 11.3. Zmienne specjalne (324)
- 11.3.1. Pojedyncze argumenty: $1, $2... (324)
- 11.3.2. Liczba argumentów: $# (325)
- 11.3.3. Wszystkie argumenty: $@ (325)
- 11.3.4. Nazwa skryptu: $0 (326)
- 11.3.5. Identyfikator procesu: $$ (326)
- 11.3.6. Kod wyjścia: $? (327)
- 11.4. Kody wyjścia (327)
- 11.5. Wyrażenia warunkowe (328)
- 11.5.1. Obsługa list pustych parametrów (329)
- 11.5.2. Użycie innych poleceń do testów (329)
- 11.5.3. Słowo kluczowe elif (329)
- 11.5.4. Konstrukcje logiczne && i || (330)
- 11.5.5. Sprawdzanie warunków (330)
- 11.5.6. Porównywanie ciągów znaków instrukcją case (333)
- 11.6. Pętle (334)
- 11.6.1. Pętle for (334)
- 11.6.2. Pętle while (335)
- 11.7. Podmiana poleceń (336)
- 11.8. Zarządzanie plikami tymczasowymi (337)
- 11.9. Dokumenty miejscowe (338)
- 11.10. Ważne narzędzia skryptów powłoki (338)
- 11.10.1. Polecenie basename (339)
- 11.10.2. Polecenie awk (339)
- 11.10.3. Polecenie sed (340)
- 11.10.4. Polecenie xargs (341)
- 11.10.5. Polecenie expr (342)
- 11.10.6. Polecenie exec (342)
- 11.11. Podpowłoki (342)
- 11.12. Włączanie do skryptów innych plików (343)
- 11.13. Pobieranie danych od użytkowników (344)
- 11.14. Kiedy (nie)używać skryptów powłoki? (344)
12. Przenoszenie plików w sieci (345)
- 12.1. Szybkie wykonywanie kopii (345)
- 12.2. rsync (346)
- 12.2.1. Podstawy dotyczące narzędzia rsync (346)
- 12.2.2. Tworzenie dokładnych kopii struktury katalogów (348)
- 12.2.3. Jak używać końcowego ukośnika? (348)
- 12.2.4. Pomijanie plików i katalogów (350)
- 12.2.5. Integralność transferu, sumy kontrolne i tryby informacyjne (351)
- 12.2.6. Kompresja (352)
- 12.2.7. Ograniczanie przepustowości (352)
- 12.2.8. Przesyłanie plików do naszego komputera (352)
- 12.2.9. Więcej informacji o programie rsync (353)
- 12.3. Wprowadzenie do współużytkowania plików (353)
- 12.4. Współużytkowanie plików za pomocą pakietu Samba (354)
- 12.4.1. Konfigurowanie serwera (354)
- 12.4.2. Kontrola dostępu do serwera (355)
- 12.4.3. Hasła (356)
- 12.4.4. Uruchamianie serwera (358)
- 12.4.5. Diagnostyka i pliki dziennika (358)
- 12.4.6. Konfigurowanie udziału plikowego (358)
- 12.4.7. Katalogi domowe (359)
- 12.4.8. Współużytkowanie drukarek (359)
- 12.4.9. Korzystanie z klientów Samby (360)
- 12.4.10. Dostęp do plików jako klient (361)
- 12.5. Klienty NFS (362)
- 12.6. Dodatkowe ograniczenia i opcje sieciowych usług plikowych (363)
13. Środowiska użytkowników (365)
- 13.1. Wytyczne dotyczące tworzenia plików uruchomieniowych (366)
- 13.2. Kiedy należy modyfikować pliki uruchomieniowe? (366)
- 13.3. Elementy plików uruchamiających powłokę (367)
- 13.3.1. Ścieżka wyszukiwania poleceń (367)
- 13.3.2. Ścieżka stron podręcznika man (368)
- 13.3.3. Symbol zachęty (369)
- 13.3.4. Aliasy (370)
- 13.3.5. Maska uprawnień (370)
- 13.4. Kolejność plików uruchomieniowych i przykłady (371)
- 13.4.1. Powłoka bash (371)
- 13.4.2. Powłoka tcsh (374)
- 13.5. Domyślne ustawienia użytkownika (375)
- 13.5.1. Domyślne ustawienia powłoki (375)
- 13.5.2. Edytor (376)
- 13.5.3. Program stronicujący (376)
- 13.6. Pułapki w plikach uruchomieniowych (376)
- 13.7. Dalsze informacje (377)
14. Ogólny przegląd interfejsów użytkownika systemu Linux (379)
- 14.1. Komponenty interfejsów użytkownika (380)
- 14.1.1. Menedżery okien (380)
- 14.1.2. Pakiety narzędziowe (381)
- 14.1.3. Środowiska interfejsów użytkownika (381)
- 14.1.4. Aplikacje (382)
- 14.2. System X Window System (382)
- 14.2.1. Menedżery wyświetlaczy (383)
- 14.2.2. Przezroczystość sieci (383)
- 14.3. Eksplorowanie klientów serwera X (384)
- 14.3.1. Zdarzenia serwera X (384)
- 14.3.2. Ustawianie preferencji i dane wejściowe serwera X (385)
- 14.4. Przyszłość serwera X (388)
- 14.5. Usługa D-Bus (389)
- 14.5.1. Instancja sesji i instancja systemowa (389)
- 14.5.2. Monitorowanie komunikatów usługi D-Bus (390)
- 14.6. Drukowanie (390)
- 14.6.1. CUPS (391)
- 14.6.2. Konwersja formatów i filtry wydruku (392)
- 14.7. Inne zagadnienia związane z interfejsami użytkownika (392)
15. Narzędzia programistyczne (393)
- 15.1. Kompilator języka C (394)
- 15.1.1. Wiele plików źródłowych (395)
- 15.1.2. Pliki i katalogi nagłówkowe (396)
- 15.1.3. Konsolidacja z bibliotekami (398)
- 15.1.4. Biblioteki współużytkowane (399)
- 15.2. Narzędzie make (403)
- 15.2.1. Przykładowy plik Makefile (404)
- 15.2.2. Wbudowane reguły (405)
- 15.2.3. Końcowe budowanie programu (406)
- 15.2.4. Aktualizowanie (406)
- 15.2.5. Argumenty i opcje wiersza poleceń (407)
- 15.2.6. Standardowe makra i zmienne (408)
- 15.2.7. Typowe cele kompilacji (408)
- 15.2.8. Organizowanie pliku Makefile (409)
- 15.3. Debuggery (411)
- 15.4. Lex i Yacc (412)
- 15.5. Języki skryptowe (412)
- 15.5.1. Python (413)
- 15.5.2. Perl (414)
- 15.5.3. Pozostałe języki skryptowe (414)
- 15.6. Java (415)
- 15.7. Spojrzenie w przyszłość: kompilowanie pakietów (416)
16. Wprowadzenie do kompilowania oprogramowania z kodu źródłowego C (417)
- 16.1. Systemy do tworzenia oprogramowania (418)
- 16.2. Rozpakowywanie pakietów kodu źródłowego języka C (419)
- 16.2.1. Od czego zacząć? (420)
- 16.3. GNU autoconf (420)
- 16.3.1. Przykład użycia systemu GNU autoconf (421)
- 16.3.2. Instalacja za pomocą narzędzia do tworzenia pakietów (422)
- 16.3.3. Opcje skryptu configure (423)
- 16.3.4. Zmienne środowiskowe (424)
- 16.3.5. Cele tworzone przez system autoconf (425)
- 16.3.6. Pliki dziennika systemu autoconf (426)
- 16.3.7. pkg-config (426)
- 16.4. Praktyki instalacyjne (428)
- 16.4.1. Gdzie instalować? (428)
- 16.5. Stosowanie poprawek (429)
- 16.6. Rozwiązywanie problemów z kompilowaniem i instalowaniem (430)
- 16.6.1. Częste błędy (431)
- 16.7. Spojrzenie w przyszłość (433)
17. Budowanie na fundamentach (435)
- 17.1. Serwery WWW i aplikacje internetowe (435)
- 17.2. Bazy danych (436)
- 17.2.1. Typy baz danych (437)
- 17.3. Wirtualizacja (437)
- 17.4. Obliczenia rozproszone i na żądanie (438)
- 17.5. Systemy wbudowane (438)
- 17.6. Końcowe uwagi (440)
Bibliografia (441)
Skorowidz (445)
Kategoria: | Systemy operacyjne |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-0981-4 |
Rozmiar pliku: | 4,6 MB |