Witaj na blogu prowadzonym przez Sebana. Spisuję tutaj swoje uwagi na różny temat. Przeważają tematy związane z Internetem, popieranymi przeze mnie rozwiązaniami dotyczącymi wykorzystania komputerów, oraz kilka innych.
I-węzeł
26 sierpnia 2006 | Klucze:
linux
5 komentarzy. trackback
Na początku tygodnia miałem problem z brakiem miejsca na jednej z moich partycji. Problem nie byłby może aż tak wielki gdyby nie fakty, że partycja ta jest montowana jako ,,/``. Za nic nie mogłem sobie z tym poradzić przez dwa dni.
inode
I-węzeł (inode) jest to struktura danych opisująca pliki zapisane na dysku. I-węzeł zawiera informacje o: typie pliku, właścicielu, grupie, długości pliku, adresie, liczbie dowiązań i kilka innych informacji. Długość pliku to nic innego jak jego wielkość, ilość zajmowanego miejsca na dysku. Adres to numer sektora w którym znajduje się plik. Adresem są sektory dysku, w których należy szukać segmentów pliku (zwykle te sektory mają wielkość 512 bajtów). Liczba dowiązań jest to ilość skojarzonych ,,kopii" pliku ze zbiorem danych. Trochę dziwaczne, ale pokażę o co chodzi.
Najpierw utworzę plik, skopiuję go, a potem utworzę do niego dowiązanie symboliczne i twarde.
seban@syrius:~/inode% touch plik
seban@syrius:~/inode% cp plik plik_kopia
seban@syrius:~/inode% ln -s plik symboliczne
seban@syrius:~/inode% ln plik dowiazanie
Tworząc plik skojarzyłem z inodem zbiór danych na dysku, plik jest pusty więc mało w nim tych informacji. Kopia jest to odtworzenie tych samych danych w innym miejscu - innym i-węźle. Kopia została skojarzona z innym i-węzłem i plik_kopia ma inny adres niż plik. Dowiązanie symbolicze jest to jakby skrót do pliku do którego tworzy się dowiązanie. Wszystkie operacje, edycja, zmiany będą odbywały się na pliku do którego prowadzi dowiązanie symboliczne. Główną różnicą jest ilość zajmowanego miejsca (dowiązanie symboliczne zajmuje 4 bajty), oraz fakt iż dowiązanie symboliczne zajmuje oddzielny i-węzeł. Dowiązanie twarde jest to taka kopia pliku, który zajmuje ten sam i-węzeł co plik z którym skojarzone jest dowiązanie. Sprawdzić ilość dowiązań można dzięki poleceniu ls -l
-rw-r--r-- 2 seban seban 0 2006-08-26 19:15 dowiazanie
-rw-r--r-- 2 seban seban 0 2006-08-26 19:15 plik
-rw-r--r-- 1 seban seban 0 2006-08-26 19:15 plik_kopia
lrwxrwxrwx 1 seban seban 4 2006-08-26 19:16 symboliczne -> plik
Ilość dowiązań to liczba przed właścicielem, druga kolumna od lewej strony. By potwierdzić moje słowa o i-węzłach tych plików można zajrzeć w polecenie ls -i
seban@syrius:~/inode% ls -i
1180218 dowiazanie 1180218 plik 1180407 plik_kopia 1180497 symboliczne
Są cztery pliki, trzy numery inodów. dowiazanie i plik mają taki sam numer i-węzła, plik_kopia i symboliczne mają inne numery swoich i-węzłów.
Problem
Mój problem polegał na tym, że polecenie df -h pokazywało prawie 700 megabajtów wolnego miejsca na partycji, a system nie mógł tworzyć nowych plików. Długo nie mogłem poszukać rowiązania, ale po wklepaniu polecenia df -i doznałem szoku. /dev/sda2 1.3M 1.3M 0 100% / Wszystkie węzły niemalże milion trzysta tysięcy były zajęte. Pozostało tylko poszukać niepotrzebne pliki, które zajmują inody.
Rozwiązanie
Chwilę szukałem po systemie i znalazłem w katalogu /var/spool/exim4 przyczynę braku i-węzłów. W katalogach input i msglog było łącznie ponad milion plików! Szczerze mówiąc to prawie się nie zastanawiałem co to za pliki i do czego są tam potrzebne. Po usunięciu plików z tych katalogów pojawiło się więcej miejsca na dysku i dużo więcej wolnych i-węzłów.
Napisałem sobie skrypt, który wyszukuje katalogi z największą liczbą plików, oraz wyszukuje puste pliki i katalogi. Skrypt jest ogólnie dostępny i można go dowolnie używać.
Load average
19 sierpnia 2006 | Klucze:
4 komentarze. trackback
Ostatnimi czasy zacząłem się zastanawiać co oznaczają wartości load average. Początkowo myślałem, że jest to obciążenie pod jakim pracuje procesor. Jednak za nic nie mogłem sobie sam wytłumaczyć dlaczego są aż trzy wartości i czemu są tak niskie nawet gdy komputer ewidentnie jest czymś zajęty.
Proces, kolejka
Proces jest to nic innego jak uruchomiony program widziany przez system operacyjny. Proces może znajdować się w różnych stanach. Załóżmy, że istnieją sobie dwa procesy procesA i procesB. Gdy procesA ma dostęp do procesora, procesor zajmuje się nim w tej chwili, to procesB czeka aż zwolni procesor zostanie zwolniony przez procesA. Gdy procesA musi na przykład coś odczytać z dysku to zwalnia procesor dla następnego, który czeka, wtedy procesB zajmuje jego miejsce, a procesA czeka za danymi z dysku i nie obciąża procesora. W systemie z jednym CPU może być wiele procesów ,,czekających`` na swoj czas procesora, ale może być tylko jeden proces zajmujący CPU w tej chwili. Procesy czekające trafiają do kolejki. Jest to wielozadaniowość.
loadavg
Gdy wyjaśnione są podstawowe pojęcia można przystąpić do definicji load average. Man top mówi lakonicznie:
trzy miary obciążenia systemu. Określaja one średnią liczbę procesów gotowych do uruchomienia w ostatniej minucie, ostatnich 5 i 15 minutach.Czyli loadavg jest to ilość procesów czekających na swoją kolej dostępu do precesora w ostatnich n minutach. i to odpowiednio 1, 5, 15 minut. Przykładowe loadavg wygląda tak: seban@syrius:~% uptime
19:40:20 up 2:13, 3 users, load average: 0.17, 0.35, 0.54 Interpretacja typu: przez ostatnie 15 minut na wykonanie czekało pół procesu jest mylna. Tim O'Reilly w książce ,,UNIX Power Tools`` pisze:
The load average tries to measure the number of active processes at any time.Zwracam uwagę na ,,any time''. Sposób obliczania tej wartości nie jest tak całkiem prosty i na pewno nie jest zorozumiały dla przeciętnego klikacza. Jednak jest on opisany na stronach teamquest.com.
Wyszukane
Informacje do tego wpisu czerpałem głównie z:
- zasoby teamquest.com
Nic tu odkrywczego nie ma, ale jednak kogo ze znajomych bym nie zapytał to nie wiedział. Jeśli znajdują się tu jakieś błędy bardzo proszę o poprawienie mnie.
LaTeX - wprowadzenie
08 sierpnia 2006 | Klucze:
6 komentarzy. trackback
Już jakiś czas temu pokazywałem jak zrobić spis treści, bibliografię w programie OpenOffice. Przy okazji wpisu o spisie treści Grzywacz napisał, że w LaTeXu to jest prostsze. Dziś postaram się to udowodnić. Do wpisu na ten temat przymierzałem się od dłuższego czasu i w końcu jest.
Co to jest?
LaTeX jest to zestaw makr systemu składu tekstu TeX służący do profesjonalnego składu drukarskiego. Nadaje się do składania książek, artykułów, prac naukowych, listów i wielu innych napewno też. Nazwy TeX i LaTeX powinno się wymiawiać ,,tech`` i ,,latech``, nigdy lateks! LaTeXa stworzył Leslie Lamport. Jako ciekawostkę podam, że autor na początku płacił ludziom za znalezione błedy w LaTeXu.
Struktura dokumentu
Pliki źródłowe systemu LaTeX najczęsciej zapisywane są z roższerzeiem tex jest to czysty tekst zawierający dopowiednie znaczniki (komendy). Na początku każdego pliku znajduje się definicja klasy dokumentu. Klasy to:
- book
- article
- report
- letter
W przykładzie pakiety użyte w preambule odpowiadają za wspólpracę z językiem polskim. Definicje używanych pakietów można wpisywać w postaci usepackage[opcje]{pakiet. Druga linia oznacza: użyj pakietu inputenc, odpowiedzialnego za kodowanie znaków w pliku wejściowym, a kodowanie to latin2
Prosty dokument
Przykładowym dokumentem, kótry zaprezentuję będzie przepisanie tego ,,artykułu`` do pliku tex i ,,przelatechowanie`` go do formatu pdf. Początek już mamy, w preambule prawie nic się nie zmieni. Prawie, bo dodam jeszcze komendę title, która ustawia wartość tytułu, jakby ktoś się nie domyślił. Podobne zastosowanie do title ma author. By potem umieścić te wartości w dokumencie wystarczy krótka komenda maketitle.
Ja w dokumencie klasy article do rozdzielania częśći, sekcji artykułu postanowiłem użyć komendy section. Na wyrost ponieważ są to krótkie części, właściwie jednoakapitowe i zamiast tego można by użyć komendy paragraph. Jednakże ten nie zostałby uwzględniony w spisie treści, a chodzi mi o pokazanie możliwości, a nie o poprawność. Jednak jeśli zachce nam się utworzyć nowy akapit wystarczy zostawić pustą linię i zostanie ona zinterpretowana jako rozpoczęcie nowego akapitu z charakterystycznym wcięciem. Każdą nową sekcję (część) rozpoczynamy od dostępnej w tej klasie komendy section{tytuł sekcji}. W tytule sekcji oczywiście nie trzeba umieszczać numeru, pamięta o tym za nas LaTeX.
Do czego jest bibliografia już chyba każdy wie. W OpenOffice trzeba było trochę poklikać by uzyskać jakiś efekt końcowy. W LaTeXu wystarczy tylko parę komend.
Opcja {intro1} to identyfikator pod jakim będzie wystepował element bibliografii. Do tworzenia większych zbiorów bibliograficznych można użyć programu BibTeX, który stworzy bazę bibliograficzną podobną do tej używanej przez OpenOffice.
Podsumowanie
Ta krótka notatka, może jeszcze nie pokazuje w pełni możliwości LaTeXa. Nie okdrywa też nic nowatorskiego, wszystko co tu pokazałem to podstawy w prawdziwym tego słowa znaczeniu. Wszystkie funkcje putaj przytoczone są rozwinięte w ,,Nie zakrótkim ..`` i gorąco polecam tą pozycję tak samo jak grupę pl.comp.dtp.tex.gust, gdzie padła odpowiedź na większość pytań początkującego. Więcej chyba można zrozumieć zaglądając do dołączonego pliku tex. W przyszłości może pokarzę jak napisać coś bardziej użytecznego w LaTeXu, mam kilka pomysłów.
Literatura
- LaTeX w Wikipedii
- TeX w Wikipedii
- Grupa Uzytkowników Systemu TeX
- T. Oetiker, H. Partl, I. Hyna, E. Schlegl ,,Niezakrótkie wprowadzenie do systemu TeX''
- pl.comp.dtp.tex.gust
- zbiór pakietów i styli do LaTeXa
Errata
Ponieważ miałem bielmo na oczach edytujac wpis usunąłem go i wprowadziłem go ponownie. Przepraszam za powstałe zamieszanie.

