Skip navigation

Category Archives: Takie tam małe ziemniaczki

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.