Skip navigation

Zapełniony główny system plików to chleb powszedni administratora. Poniżej kilka poleceń przydatnych w takiej sytuacji..

Ile właściwie zajmuje system?

Aby szybko ocenić ile miejsca można zwolnić trzeba wiedzieć ile zajmuje system. W tym celu można podsumować rozmiar wszystkich pakietów. Na systemach opartych o RPM można to zrobić tak:

rpm -qa --queryformat "%{SIZE}\n" | perl -e 'my $sum=0; while(<>) { $sum+=$_ }; printf "%.2f\n",$sum/(1024**3)'

Skasowałem plik ale miejsca dalej nie ma…

W Linuksie miejsce jest zwalniane dopiero gdy zamknięta zostaje ostatnia referencja do usuwanego pliku. Tą referencją jest również deskryptor otwarty w działającym programie. Aby odszukać pliki skasowane ale wciąż używane można przeszukać katalog /proc lub użyć polecenia lsof (w obu przypadkach trzeba to robić jako root):

lsof | grep deleted

Jest miejsce, a nie można go wykorzystać

W systemie ext2/ext3/ext4 istnieje możliwość zarezerwowania miejsca dla użytkownika root. W efekcie zwykły użytkownik nie może zapisać nowego pliku czy dopisać czegoś do już istniejącego, mimo iż na dysku jest jeszcze miejsce. Jeśli jest to problemem, można zmniejszyć ilość zarezerwowanej przestrzeni poleceniem tune2fs:

tune2fs -m 0 /dev/sda2

(w powyższym przykładzie główny system plików znajduje się na partycji /dev/sda2)

Ostatnio natknąłem się na problem z uruchamianiem przez SSH skryptów, które startują procesy w tle. Skrypt uruchamiany lokalnie działał poprawnie a zdalnie przez ssh ‘wisiał’. Okazuje się że problem mozna zasymulować w prosty sposób. Wystarczy napisać prosty skrypt uruchamiający zadanie w tle:

#!/bin/bash
nohup sleep 300 &

Po uruchomieniu tego skryptu przez SSH, klient ssh czeka na zakończenie polecenia sleep.

Udało mi się znaleźć dwa rozwiązania:
– uruchomienie ssh z parametrem -tt (wynika z tego że nohup nie działa poprawnie jeśli skrypt nie jest podpięty do terminala)
– przekierowanie deskryptorów wejścia/wyjścia (również dla błędów).

W naszym niesamowicie skomplikowanym skrypcie można to zrobić np. tak:

#!/bin/bash
exec >/dev/null /tmp/error.log
nohup sleep 300 &

Przeglądanie różnic między plikami bywa uciążliwe. Zwłaszcza gdy są to np. rozbudowane pliki xml, posiadające różnice w formatowaniu (np. różne znaki stosowane przy wcięciach, spacje przed znakiem ‘>’ itp.). Narzędzia typu diff lub nawet vimdiff nie zawsze bywały wystarczająco pomocne. W moim przypadku nawet program XMLSpy (skądinąd bardzo dobry edytor XML) nie prezentował różnic między takimi plikami wystarczająco czytelnie. Problem rozwiązał się gdy natknąłem się na program Meld (http://meldmerge.org/). Prosty, funkcjonalny, przejrzysty; posiadający ciekawą funkcję definiowania filtrów w postaci wyrażeń regularnych eliminujących całą linię (bądź tylko jej fragment) z procesu wyszukiwania różnic. dzięki niej można szybko wyspecyfikować te elementy pliku, które nie są dla nas istotne. Dla mnie bomba! :D

Dzisiaj miałem potrzebę skorzystania ze strony wykorzystującej moją nieulubioną technologię czyli “aplet dżawowy”. Niestety dostarczana z OpenSuSE wtyczka IcedTea nie radziła sobie z tą kosmiczną technologią. Dla tego też musiałem zainstalować JRE ze strony ORACLE’a. Ale na tym się nie skończyło. Żeby wszystko wyglądało ładnie a wtyczka była widziana poprzez mechanizm alternatives musiałem troszeczkę pogrzebać i wykombinowałem takie polecenie:

update-alternatives  --install /usr/lib64/browser-plugins/javaplugin.so \
javaplugin /usr/java/jre1.7.0_09/lib/amd64/libnpjp2.so 20000

I voila! Wtyczka widoczna we wszystkich zainstalowanych przeglądarkach.

 

Przy konfiguracji usług sieciowych z wykorzystanie protokołu SSL niezbędne jest narzędzie do testowania.
Ja do tego celu zawsze używałem polecenia openssl s_client…
Read More »

XML że względu na swoją budowę wymaga specyficznych narzędzi do obróbki. W linuksie mamy ich na szczęście kilka, a przy odrobinie wysiłku możemy napisać własne wykorzystując różne dostępne biblioteki czy moduły.

Pierwszym narzędziem na mojej liście jest xmllint. Spośród wielu opcji najczęściej wykorzystuję formatowanie XML’a:

bash$> cat test.xml | xmllint -format -

… oraz walidację względem pliku DTD bądź schematu:

bash$> xmllint --valid test.xml

Powyższe wywołanie sprawdzi poprawność pliku XML względem schematu/pliku DTD wskazanego wewnątrz pliku. Jeśli chcmy jawnie podać lokalizację schetu/DTD możemy wykorzystać opcje –dtdvalid URL lub –schema shcema-file.xsd. Oczywiście xmllint posiada wiele innych przydatnych opcji więc warto zerknąć do manuala.

Od kilku miesięcy pracuję w korporacji, gdzie niestety – jak to w korporacji – standardowym systemem desktopowym jest tzw. produkt pewnej dużej firmy z Redmond. Aby utrzymać swoją produktywność na rozsądnym poziomie zaopatrzyłem się w maszynę wirtualną z linuksem. Problem w tym, że do celów prezentacji obrabianych przeze mnie danych i tak wykorzystuję Excel’a.

Szukając jakiegoś szybkiego sposobu na kopiowanie danych z konsoli do arkusza znalazłem bardzo prosty program o nazwie xclip, który kopiuje do schowka to co dostaje na standardowe wejście. Dodając do tego współdzielony schowek między maszyną wirtualną maszyną a Windowsem – mamy szybki i efektywny sposób na kopiowanie danych. Przerzucałem w ten sposób po kilka tysięcy wierszy bez zauważalnego opóźnienia. Aby dane wklejane do arkusza były automatycznie rozbijane na kolumny powinny wykorzystywać znak tabulacji jako separator.

Przykładowe wywołanie wraz z podmianą przecinka na znak tabulacji:

 Bash$ ./skrypt.sh | sed 's/,/\t/g' | xclip -selection clipboard

A potem już tylko <Ctrl-V>…